Ciao các bạn bạn trẻ mất phương hướng. Nếu các bạn tìm thấy cái page này thì cơ bản chắc 90% là những người đã nghe qua khái niệm, nhưng chưa biết phải làm cái đếch gì mới kubernetes và từ một nơi nào đó sếp vả một cái yêu cầu deploy vào mặt các bạn.
Thế nên tôi Cù Xuân Bách sẽ ở đây diễn giải sự ngu dốt của mình và rồi chúng ta sẽ nhảy vào một cái rabit hole nào đó cho tới hết ngày. Tổng quan bài này rõ ràng rồi, Kubernetes các bước.
Và đừng kì vọng các bạn rút ra được cái gì ngay lập tức, như các bạn biết đấy, khi biết một cái gi đấy rồi thì chúng ta chỉ có thêm càng nhiều câu hỏi hơn thôi. Nói chung đấy là việc tốt.
I, Kubernetes ?.
Tại sao thì thật ra mình chán với cái kiểu chỉ step by step rồi và thật ra cái kiểu apply cho người mới thế cũng quá là nhiều, nên nội dung cái này chúng ta sẽ vẽ ra cái view tổng quan hơn. Để bạn hiểu rằng tất cả các các step trong cái deployment đó nó có ý nghĩa thế nào. Và chúng ta có thể làm gì với K8s
Vậy câu hỏi đầu tiên mình nghĩ là quan trọng nhất. Tại sao lại là kubernetes?
Thật ra theo mình có rất nhiều câu trả lời cho cái vấn đề này và có khi cả tấn article viết về nó, nhưng cái mình cho là quan trọng nhất thì nó ở đây:
- Cộng đồng người dùng lớn mạnh, research dễ dàng
- Stardard rõ ràng và mở dễ dàng xây dựng các module xoay quanh từ đó phát triển hơn cả.
Bất kì sản phẩm nào khi có lượng người dùng lớn, có khả năng đóng góp và đạt được sự dễ dàng trong việc đóng góp phát triển cho nội tại sản phẩm thì chắc chắn sẽ đạt được thành công theo một lẽ dĩ nhiên.
II, Kubernetes – Open Standard!
Sự phát triển của container orchestration có thể nói khởi nguồn từ thành công của docker, tuy nhiên tại thời điểm đầu docker thật sự chiếm cứ quá mạnh cũng như chỉ tập trung cho môi trường deploy nhỏ như dev, hay đơn server bó hẹp do không có . Tất cả biến chuyển khi mà OCI (Open Container Initiative) xuất hiện và define ra cấu trúc của của image / runtime và từ đó mở rộng ra thành thêm quy chuẩn lần lượt là CRI, CNI, CSI và mới đây là SMI.
Và lần này chúng ta sẽ phân tích các quy chuẩn này thành các bài đơn lẻ trong các bài viết tiếp theo, cũng như lấy ví dụ về các module của từng Interface. Tiếp theo đơn giản là các khái niệm định nghĩa lần lượt của từng Interface một.
III, CRI (Container Runtime Interface)
Quy chuẩn về interface của container runtime, khi tách được phần này ra thì bản thân khối kubernetes sẽ là một chủ thể tách biệt chứ không dính cứng tới một runtime nào. Nói đơn giản hơn, với các vấn đề về OS khác nhau các lập trình viên có thể xây dựng các runtime khác nhau miễn là nó đảm bảo tương thích CRI. Hiện nay chúng ta có các CRI như containerd ( xuất hiện trong phần lớn các hướng dẫn deploy ), CRI-O, rkt, Firecracker, gVisor.
CNCF LINK
IV, CNI (Container Network Interface)
Quy chuẩn về interface network cho container, như trên chúng ta không còn bó buộc bởi network cơ bản của kubernetes mà có thể chuyển sang các solution khác cho các apply riêng biệt tùy theo từng hệ thống. Network luôn là một chủ đề quan trọng và ảnh hưởng trực tiếp tới trực quan của hệ thống mà chúng ta triển khai. Chúng ta có các solution theo cloud hay những apply như cilium sử dụng ebpf, calico vân vân và mây mây. Tất cả đều có một giai đoạn phát triển và có những mặt ưu nhược của riêng mình
CNCF LINK
V, CSI (Container Storage Interface)
Bản chất của các hệ thống luôn có các bộ phận statefull từ đó dẫn tới việc storage luôn là một vấn đề lớn, kéo theo từ việc lưu trữ đơn giản là các vấn đề về backup, restore, control. CSI chắc chắn khó có thể thiếu trong một hệ thống cần HA. Và tương tự chúng ta có cả tấn solution dự theo cloud hay on-premiese cùng các ưu nhược riêng biệt.
CNCF LINK
VI, SMI (Service Mesh Interface)
Ừm, cái này chả phải nói rồi, giờ thì đi đâu cũng thấy Service Mesh. Tuy là việc apply nó có thật sự là cần thiết hay hợp lý hay không còn gây tranh cãi nhưng lợi ích và thành công thì không còn gì để nói. Tương tự một con Link cho SMI
CNCF LINK
VII,Kết
Đấy đưa khái niệm thế. Bài tiếp thì chúng ta sẽ đi vào phân tích vài sản phẩm tương ứng với các interface để đào sâu hơn vào nó làm gì, ở đâu, có những gì bên trong và kéo theo cái gì hay không.
Một mớ hổ lốn khác, rất mệt mỏi. Mệt Mỏi.