Kubernetes เผยรายละเอียดในการถอด Docker จากรันไทม์ ยืนยันยังใช้ build อิมเมจได้ตามปกติ

by nutmos
5 December 2020 - 03:23

ข่าวใหญ่สำหรับวงการคอนเทนเนอร์ที่ผ่านมา คือ Kubernetes ปรับ Docker ในฐานะคอนเทนเนอร์รันไทม์เข้าสู่ deprecated และเตรียมถอดออกในอนาคต ซึ่ง Kubernetes ได้เขียนอธิบายอีกครั้งอย่างละเอียดเกี่ยวกับการถอด Docker ออกจากการเป็นรันไทม์

Kubernetes ระบุว่า มาตรฐาน Container Runtime Interface (CRI) ถูกสร้างขึ้นมาเพื่อให้ทำงานข้ามคอนเทนเนอร์รันไทม์ได้ ปัจจุบันรันไทม์ยอดนิยมที่รองรับ CRI มีทั้ง containerd และ CRI-O (รันไทม์ทั้งสองตัวนี้อยู่ภายใต้การดูแลของ CNCF ผู้ดูแลโครงการ Kubernetes ด้วย) แต่ Docker เองไม่ใช่ตัวคอนเทนเนอร์รันไทม์อย่างเดียว เพราะ Docker หมายถึง stack ที่มี containerd เป็นรันไทม์ และเสริมเข้าไปด้วย UX ต่าง ๆ เพื่อให้ทำงานพัฒนาระบบบนแพลตฟอร์มคอนเทนเนอร์ได้ง่าย ๆ

เนื่องจากตัว Docker เองไม่มี CRI ทาง Kubernetes จึงสร้าง dockershim ขึ้นมา เป็นโซลูชั่นชั่วคราวให้ Kubernetes ติดต่อกับ Docker ซึ่งเป็นคอนเทนเนอร์รันไทม์ยอดนิยมได้ง่าย ๆ แต่ dockershim ก็เป็นภาระต่อโครงการ Kubernetes จึงต้องวางแผนถอดออกเมื่อถึงเวลาที่เหมาะสม

อย่างไรก็ดี ใน Kubernetes 1.20 จะทำแค่ปรับสถานะ dockershim เป็น deprecated เท่านั้น เท่ากับว่าจะมีคำเตือนตอนที่ kubelet สตาร์ทขึ้นมาโดยใช้รันไทม์เป็น Docker และเนื่องจากการถอด dockershim มีผลกระทบค่อนข้างสูง ทางโครงการจึงขยายไทม์ไลน์ออกไป โดยแผนคร่าว ๆ คือจะถอด dockershim อย่างเร็วสุดคือ 1.23 ที่คาดว่าจะออกในปลายปี 2021 ดังนั้นการประกาศ deprecated คือเป็นคำเตือนผู้ดูแลระบบวางแผนการไมเกรตเป็นคอนเทนเนอร์รันไทม์ตัวอื่นก่อนที่จะถอดออกจริง

สำหรับฝั่งนักพัฒนาที่ใช้คอนเทนเนอร์โดยใช้ Docker เป็นตัว build และรัน ทางโครงการ Kubernetes ระบุว่า ตัวอิมเมจที่ Docker ทำการ build ขึ้นมานั้นเป็นอิมเมจตามมาตรฐาน Open Container Initiative (OCI) อยู่แล้ว ดังนั้นหมายความว่าเครื่องมือใดก็ตามที่รองรับมาตรฐาน OCI (ซึ่งรวมถึง containerd และ CRI-O ด้วย) สามารถนำอิมเมจของ Docker ไปใช้งานได้ทันที เท่ากับว่านักพัฒนายังคงใช้ Docker เป็นเครื่องมือในการพัฒนาได้ตามเดิม

ที่มา - Kubernetes Blog (1, 2), dev.to

Blognone Jobs Premium