Hiện đã có phiên bản mới nhất của Kubernetes Kubernetes v1.20.0-rc.0 . Dự án Kubernetes có kế hoạch ngừng hỗ trợ Docker Engine trong kubelet và hỗ trợ cho dockershim sẽ bị xóa trong một bản phát hành trong tương lai, có thể là vào cuối năm sau. Net/net hỗ trợ cho các container image của bạn được xây dựng bằng các công cụ Docker sẽ không bị loại bỏ và sẽ vẫn hoạt động như trước.
Tuy nhiên, tin tốt hơn nữa là Mirantis và Docker đã đồng ý hợp tác để duy trì mã shim độc lập bên ngoài Kubernetes, như một CRI interface phù hợp cho Docker Engine. Chúng ta sẽ bắt đầu với nguyên mẫu ban đầu tuyệt vời từ Dims , tại https://github.com/dims/cri-dockerd và tiếp tục cung cấp nó dưới dạng một dự án mã nguồn mở, tại https://github.com/Mirantis/cri- dockerd. Điều này có nghĩa là bạn có thể tiếp tục xây dựng Kubernetes dựa trên Docker Engine như trước, chỉ cần chuyển từ dockershim tích hợp sẵn sang dock bên ngoài. Docker và Mirantis sẽ làm việc cùng nhau để đảm bảo rằng nó tiếp tục hoạt động tốt như trước đây và vượt qua tất cả các bài kiểm tra tuân thủ và hoạt động giống như phiên bản được tích hợp sẵn. Docker sẽ tiếp tục gửi shim này trong Docker Desktop vì điều này mang lại trải nghiệm tuyệt vời cho nhà phát triển và Mirantis sẽ sử dụng cái này trong Mirantis Kubernetes Engine.
Điều này có ý nghĩa gì đối với bạn nếu bạn sử dụng Docker và Kubernetes?
Trước hết, đừng lo lắng ? Các developer vẫn có thể sử dụng nền tảng Docker để xây dựng, chia sẻ và chạy các container trên Kubernetes! Thay đổi này chủ yếu ảnh hưởng đến các người vận hành và quản trị của Kubernetes và không ảnh hưởng đến luồng công việc của developer. Các bản build Docker image tuân thủ OCI (Open Container Initiative), được hỗ trợ đầy đủ trên containerd và sẽ tiếp tục chạy tốt trên Kubernetes.
Nếu bạn đang sử dụng Docker, bạn đã sử dụng containerd. Chúng ta đang sử runtime của Docker dựa trên containerd, chúng cung cấp trải nghiệm tuyệt vời cho developer về nó. Đối với các môi trường production, chúng ta không cần thiết việc sử dụng dễ dàng hơn là hiệu năng và việc ổn đinh. chẳng hạn như Kubernetes và có thể không cần việc hữu dụng của Docker, việc sử dụng trực tiếp các container runtime nhẹ như containerd là điều hợp lý. Nếu bạn nhìn vào hình ảnh bên dưới đây, bạn sẽ thấy việc sử dụng docker trong kubernetes không thực sự cần thiết và nó thêm nhiều bước hơn trong quá trình vận hành và triển khai kubernetes.
Docker đã thiết lập Open Container Initiative (OCI) vào năm 2015 để hỗ trợ các container chuẩn có thể tương tác hoàn toàn và đảm bảo rằng mọi container đều có thể chạy trong mọi môi trường. Đây là một thành công lớn trong việc thúc đẩy đổi mới trong khi duy trì khả năng tương tác.
Docker đã tạo ra dự án containerd, cùng với Google và IBM, vào năm 2016, với mục tiêu là sự chuyển đổi này. Việc ngừng sử dụng docker-shim (và Docker Engine làm thời gian chạy) đánh dấu việc hoàn thành cam kết lâu dài cung cấp thời gian chạy hiện đại cho Kubernetes. Containerd được tạo ra dưới dạng low-level runtime, có thể mở rộng cốt lõi cho cả Docker và Kubernetes để sử dụng theo cách phù hợp nhất.
Containerd đã được đóng góp cho CNCF vào năm 2017 và đã phát triển để kết hợp dự án CRI containerd để giao tiếp với Kubernetes, cũng như chứng kiến một loạt các đổi mới và đầu tư từ khắp nơi trong ngành, bao gồm từ Amazon, Google, Microsoft và IBM.
Vào năm 2019, nó đã trở thành một dự án CNCF tốt nghiệp, cấp dự án cao nhất, cho thấy sự trưởng thành của nó và nó vẫn là thời gian chạy container duy nhất có trạng thái này. Trong vài năm qua, các nhà cung cấp dịch vụ Kubernetes hàng đầu như AWS và Google đã chuyển sang Containerd làm runtime Kubernetes của họ. Quá trình chuyển đổi này hiện phản ánh thành công lớn của công việc này, và của cộng đồng thịnh vượng xung quanh containerd.
Hỗ trợ cho các container image của bạn được xây dựng bằng các công cụ Docker không bị loại bỏ.
Container image bạn tạo bằng công cụ Docker sẽ tiếp tục chạy trên Kubernetes. Buildkit, cơ sở hạ tầng xây dựng thế hệ tiếp theo của chúng ta, có kiến trúc linh hoạt để mặc dù nó có thể được sử dụng làm trình tạo với Docker, nó cũng có thể nói chuyện trực tiếp với containerd hoặc runc để thay thế để sử dụng trong cơ sở hạ tầng mà Docker có thể không khả dụng.
Docker cam kết phát triển containerd: chúng ta sẽ tiếp tục đầu tư hơn nữa, cùng với cộng đồng buildkit ngày càng phát triển, để giúp bạn sử dụng các bản dựng Docker ở bất cứ đâu và bất cứ khi nào cơ sở hạ tầng của bạn được lưu trữ.
Bạn có thể tiếp tục tạo và chạy image Docker local và trong cụm Kubernetes của mình vì việc ngừng sử dụng này sẽ không ảnh hưởng đến trải nghiệm đó.
Dự án Kubernetes không được dùng nữa sau đó là gì?
Kubernetes không dùng dockershim , là một thành phần trong quá trình triển khai kubelet của Kubernetes, giao tiếp với Docker Engine. Arnaud Porterie đã có một số suy nghĩ tuyệt vời về điều này mà anh ấy đã chia sẻ ở đây .
Dự án Kubernetes cũng đã xuất bản Câu hỏi thường gặp này. Kat Cosgrove đã làm rất tốt khi giải thích những thay đổi rất đơn giản ở đây .
Điều này có ý nghĩa gì đối với Developer và Admin?
Ngày nay, và trong Kubernetes v1.20, quản trị viên Kubernetes có thể tiếp tục sử dụng các lệnh docker và lệnh kubectl để quản lý các cụm Kubernetes của họ.
Quản trị viên Kubernetes sẽ có thể sử dụng dockershim trong tương lai . Theo dõi các blog của Mirantis và Docker để biết thông tin cập nhật về tương lai của dockershim và cách cài đặt shim độc lập ..
Trong một bản phát hành tương lai của Kubernetes, một vài bản phát hành nhỏ kể từ bây giờ, khi hỗ trợ cho dockershim nội bộ cuối cùng bị xóa khỏi kubelet của Kubernetes, quản trị viên Kubernetes sẽ cần thực hiện một số thay đổi để đảm bảo các lệnh docker kiểm tra các cụm Kubernetes sẽ tiếp tục hoạt động. Các developer có thể tiếp tục sử dụng công cụ Docker để build, push, pull, run container và image container trên Kubernetes.