Docker sẽ bị loại bỏ trên những bản release tiếp Theo của Kubernetes.

 

Ngày 02 tháng 12 năm 2020 , Kubernetes ra thông báo là docker sẽ được loại bỏ trên những bản kubernetes tiếp theo. 

Từ bản Kubernetes 1.22 thì docker sẽ không được hỗ trợ trên bộ Kubernetes. 



Như hình vẽ thì các node sẽ giao tiếp với Control Plane, và trên mỗi node, kubelet sẽ lấy thông tin node và thực thi CRI để tạo/xoá container chạy trên node mà kubenet đang quản lý. 

Trong một bộ Kubernetes cluster thì docker chỉ đóng vai trò là CRI cho kubernetes Cluster. 

Vậy CRI là gì ? CRI là viết tắt bởi Container Runtime Interface, là phần mềm đảm nhiệm cho container chạy. 

Trong Kubernetes kubelets thì docker làm chức năng CRI dưới hình thái là một module gọi lại dockershim, vậy thực chất thì module dockershim bị loại bỏ khỏi Kubernetes ở các phiên bản tiếp theo. 


Lý do : 

Theo như Kubernetes đưa ra thì docker chỉ có chức năng CRI trong cluster nhưng nó vẫn có những thành phần không cần thiết được cài đặt trên cluster, làm cho cluster hoạt động nặng hơn, 

[hinh h5]



Theo như hình trên thì kubernetes chỉ làm việc trong khung đỏ, cho nên phần docker network và docker volume thì kubernetes không cần.  Những thành phần này được thêm vào thì làm nguy cơ bảo mật cao hơn cho một hệ thống chạy kubernetes trên môi trường production. 

Vậy Kubernetes sẽ thay thế CRI dockershim bằng CRI nào : 

Có 2 lựa chọn đưa ra: 

1. containerd 

source code ở đây: https://github.com/containerd/containerd/



Nhìn trông có vẻ là của docker nhưng thực chất nó là một CRI độc lập với docker, CRI này nó gần gũi với docker nên bạn có thể migrate dockershim sang dùng CRI containerd này. 

2. CRI-O


Source code ở đây : https://github.com/cri-o/cri-o

Điểm mạnh của CRI-O này là nó chỉ tạo ra một CRI runtime, nên hoạt động nhẹ nhàng trong khi containerd khởi động như là một phần của docker nên một số phần mềm khởi động theo containerd, CRI-O chỉ tạo ra một CRI runtime duy nhất. 

Với container runtime có 2 loại: 

CRI runtimes và OCI runtimes :

OCI viết tắt bởi Open Container Initiative, là một bộ tiêu chuẩn giao tiếp giữa container và những công nghệ giao tiếp nếu có. Ngoài ra nó cũng là một runtime dưới tên là runC mà containerd và CRI-O được xây dựng trên nó. 

RunC : https://github.com/opencontainers/runc

Theo kubernetes blog:

https://kubernetes.io/blog/2020/12/02/dockershim-faq/ 





Nhận xét

Bài đăng phổ biến từ blog này

Cách sử dụng sys.argv trong python.

Trang web medium.com chết, vì sao ?

Thiết kế một RESTful API bằng python và flask.