09/02/2021
Khi nào thì dùng kubernetes và khi nào dùng docker swarm?
- Đầu tiên là khái niệm container, nó trừu tượng hoá các hàm gọi hệ điều hành, ko cần đến graphic driver, nên khá nhỏ gọn, và được thiết kế tương thích với docker, kubernetes, nhiều nền tảng khác, OCI - open container initiative.
- Docker đơn giản là chạy file trong container thường trên nền của 1 máy ảo qua 1 tầng engine chia sẻ thư viện chung, thay vì độc lập từng máy ảo nên nhẹ hơn, giống như kiểu các ứng dụng python dùng chung 1 môi trường conda thay vì cài đặt riêng môi trường.
- Docker swarm là cách kết nối 1 nhóm chạy docker, thường dùng docker machine để trừu tượng hoá các virtual host trên cloud qua driver, sử dụng raft consensus và các tiện ích mở rộng thiên về load balancing.
- Kubernetes là hệ thống để quản lý các container, có thể dùng docker, thiên về scaling với các rule phức tạp.
-----------------------
Tuy vậy docker swarm và kubernetes bắt đầu học lẫn nhau, thậm chí chỉ cần cài docker cũng có sẵn kubernetes trên máy, vì swarm giờ các rule deployment ngày càng flexible hơn, còn kubernetes cũng bỏ bớt tầng để transparent chạy nhanh hơn, nó cũng giống như vuejs và react, Java và C #, Php với Javascript, swarm bắt đầu hỗ trợ cluster và kubernetes thì bỏ docker đi cho nhẹ. Kubernetes có 2 thứ khá hay là pod và federation, pod giống như 1 gateway kết hợp vài micro service chạy trong từng container, còn federation giúp quản lý replication trên nhiều cluster, ko phải quản lý replication kiểu cho từng pod, vì thế kubernetes có thể quản lý tới hàng chục ngàn node nhờ phân cấp tốt hơn. Tuy nhiên swarm có lợi thế là tính đơn giản và triển khai nhanh, ít tầng hơn, chỉ gồm 1 network overlay và dễ dàng đổi network cho từng service, hoặc đổi mode sang host và chạy bình thường khi swarm chết, và rất hợp với hybrid system kết nối với load balancing ví dụ nginx để lấy ip của host hoặc các container khác đang chạy. Các cluster swarm có thể load blancing qua các entry của master, có thể quản lý vài ngàn node.
Nguồn : Thanh Tu Phạm