Giải thích các thành phần
- master node – Là server điều khiển các máy Worker chạy ứng dụng. Master node bao gồm 4 thành phần chính:
- API Server: là thành phần giúp các thành phần khác liên lạc nói chuyện với nhau. Lập trình viên khi triển khai ứng dụng sẽ gọi API Kubernetes API Server này.
- kube-scheduler: Thành phần này lập lịch triển khai cho các ứng dụng, ưng dụng được đặt vào Worker nào để chạy.
- kube-controler-manager: Thành phần đảm nhiệm phần quản lý các Worker, kiểm tra các Worker sống hay chết, đảm nhận việc nhân bản ứng dụng…
- etcd: Đây là cơ sở dữ liệu của Kubernetes, tất cả các thông tin của Kubernetes được lưu trữ cố định vào đây.
- Nếu master node chết thì các worker node vẫn hoạt động ⇒ Dịch vụ vẫn chạy (chỉ các service có dùng authentication, authorization của master node sẽ chết (ArgoCD, …)), các worker node ko thể giao tiếp với master node ⇒ ko thể schedule pod mới,…
- worker node – Là server chạy ứng dụng trên đó. Bao gồm 3 thành phần chính:
- Docker (thực ra chỉ cần Container Runtime): Là thành phần giúp chạy các ứng dụng dưới dạng Container. Thông thường người ta sử dụng Docker.
- kubelet: đây là thành phần giao tiếp với Kubernetes API Server, và cũng quản lý các container.
- kube-proxy: Thành phần này đảm nhận việc phân tải giữa các ứng dụng.
- Nếu worker node chết thì kubernetes sẽ ngắt node đó ra khỏi Cluster dẫn đến các service trên node này sẽ bị đánh dấu ở trạng thái Unknow, sau đó k8s sẽ schedule service đó trên worker node khác (dịch vụ sẽ có downtime cho hệ thống – thời gian chờ service mới được start xong)
- kubectl – Tool quản trị Kubernetes, được cài đặt trên các máy trạm, cho phép các lập trình viên đẩy các ứng dụng mô tả triển khai vào cụm Kubernetes, cũng như là cho phép các quản trị viên có thể quản trị được cụm Kubernetes.