Kubernetes (K8s): Kiến Trúc, Chức Năng & Cơ Chế Hoạt Động.
Trong kỷ nguyên Cloud Native, Kubernetes (K8s) đã trở thành "hệ điều hành" cho các ứng dụng container. Nếu bạn đã quen với Docker, thì K8s chính là bước tiếp theo để vận hành hệ thống ở quy mô lớn.
1. Kubernetes (K8s) là gì?
Kubernetes (viết tắt là K8s) là một nền tảng mã nguồn mở dùng để tự động hóa việc triển khai, mở rộng và quản lý các ứng dụng container.
-
Tên gọi: Xuất phát từ tiếng Hy Lạp có nghĩa là "người lái tàu".
-
Nguồn gốc: Được phát triển bởi Google (dựa trên dự án nội bộ Borg) và hiện được quản lý bởi CNCF.
2. Kiến trúc chi tiết của Kubernetes
Kiến trúc K8s hoạt động theo mô hình Cluster (Cụm), chia làm hai phần chính: Control Plane và Worker Nodes.
2.1. Control Plane (Bộ não điều khiển)
Đóng vai trò quyết định và giám sát toàn bộ cluster:
-
kube-apiserver: "Cổng vào" duy nhất của Cluster. Mọi thao tác từ người dùng (qua
kubectl) hay các thành phần khác đều đi qua đây. -
etcd: Cơ sở dữ liệu lưu trữ mọi cấu hình và trạng thái của cluster.
-
kube-scheduler: Tìm kiếm Node phù hợp nhất để chạy các Pod mới dựa trên tài nguyên.
-
kube-controller-manager: Chạy các tiến trình nền để đảm bảo trạng thái thực tế luôn khớp với cấu hình mong muốn.
2.2. Worker Nodes (Nơi thực thi)
Là các máy chủ (vật lý hoặc ảo) chạy ứng dụng:
-
Kubelet: Một "đại lý" trên mỗi node, đảm bảo các container trong Pod hoạt động bình thường.
-
Kube-proxy: Quản lý quy tắc mạng, giúp định tuyến lưu lượng đến các container.
-
Container Runtime: Phần mềm chạy container (như containerd, Docker, CRI-O).
3. Chức năng chính của Kubernetes
Tại sao K8s lại trở thành tiêu chuẩn công nghiệp?
-
Service Discovery & Load Balancing: K8s có thể "phơi" một container ra ngoài internet hoặc nội bộ và tự động cân bằng tải.
-
Storage Orchestration: Tự động gắn các hệ thống lưu trữ (Local, Cloud như AWS EBS, Google Persistent Disk).
-
Automated Rollouts & Rollbacks: Triển khai phiên bản mới của ứng dụng mà không gây gián đoạn (Zero Downtime). Nếu có lỗi, K8s tự động quay lại phiên bản cũ.
-
Self-healing: Tự khởi động lại container bị lỗi, thay thế Pod khi Node chết.
-
Secret & Configuration Management: Quản lý mật khẩu, mã Token mà không cần build lại image.
4. Cơ chế hoạt động của K8s
K8s hoạt động dựa trên cơ chế Declarative Configuration (Khai báo trạng thái) thay vì ra lệnh trực tiếp.
-
Khai báo (YAML/JSON): Bạn mô tả trạng thái mong muốn (ví dụ: "Tôi muốn chạy 3 bản sao của ứng dụng Java Spring Boot").
-
Lưu trữ: Thông tin được gửi đến
api-servervà lưu vàoetcd. -
Hòa giải (Reconciliation Loop):
Controller Managerliên tục kiểm tra. Nếu thấy hiện tại chỉ có 2 bản sao (do 1 cái bị lỗi), nó sẽ ra lệnh choSchedulertạo thêm 1 bản sao mới trên Node còn trống.
5. Tìm hiểu về Kubernetes Engine Services
Để giảm bớt gánh nặng quản lý Control Plane và etcd, các nhà cung cấp Cloud lớn đưa ra các dịch vụ Managed Kubernetes (Kubernetes Engine):
6. Lời kết
Kubernetes không chỉ là một công cụ, nó là một cuộc cách mạng trong cách chúng ta vận hành phần mềm. Với Tobi, việc đưa ứng dụng từ Eclipse/Java lên Docker, sau đó đẩy lên K8s sẽ là một quy trình chuẩn DevOps giúp hệ thống của bạn (như satikey.store) luôn sẵn sàng 24/7.