Bỏ qua

06.kube controller manager

1. kube-controller-manager - "Bộ não" Điều hành của Kubernetes 🧠

Hãy tiếp tục với phép so sánh về hạm đội tàu. Nếu kube-api-server là "tổng đài" trung tâm, thì kube-controller-manager giống như là tập hợp các phòng ban chuyên trách trên tàu chỉ huy. Mỗi phòng ban (mỗi "controller") có một nhiệm vụ riêng và làm việc không ngừng nghỉ.

Về cơ bản, kube-controller-manager là một tiến trình (process) duy nhất, nhưng bên trong nó lại chứa và quản lý rất nhiều controller khác nhau.


2. Controller là gì? (Vòng lặp Đối chiếu) 🔄

Đây là khái niệm cốt lõi bạn cần nắm:

Một controller trong Kubernetes là một tiến trình liên tục thực hiện một vòng lặp điều khiển (control loop):

  1. Theo dõi (Watch): Nó liên tục theo dõi trạng thái của một loại tài nguyên nào đó trong cụm (thông qua kube-api-server).
  2. Đối chiếu (Reconcile): Nó so sánh trạng thái hiện tại (current state) với trạng thái mong muốn (desired state) mà bạn đã khai báo.
  3. Hành động (Act): Nếu hai trạng thái này không khớp nhau, controller sẽ thực hiện các hành động cần thiết để đưa trạng thái hiện tại về gần với trạng thái mong muốn.

Tất cả "trí thông minh" của các đối tượng Kubernetes như Deployment, Service, Namespace... đều được hiện thực hóa thông qua các controller này.


3. Các "Phòng ban" tiêu biểu (Ví dụ về Controller)

kube-controller-manager quản lý rất nhiều controller. Dưới đây là hai ví dụ điển hình:

a. Node Controller - "Phòng Quản lý Node"

  • Nhiệm vụ: Theo dõi "sức khỏe" của tất cả các Worker Node trong cụm.
  • Cách hoạt động:
  • Cứ mỗi 5 giây, nó kiểm tra trạng thái của các node.
  • Nếu một node không gửi "tín hiệu sự sống" (heartbeat) về, controller sẽ đợi 40 giây rồi đánh dấu node đó là Unreachable.
  • Sau khi đánh dấu Unreachable, nó cho node đó thêm 5 phút để "hồi sinh".
  • Nếu sau 5 phút mà node vẫn không quay lại, Node Controller sẽ tiến hành "trục xuất" (evict) các Pod đang chạy trên node hỏng đó và yêu cầu kube-scheduler tìm nhà mới cho chúng trên các node khỏe mạnh khác (với điều kiện các Pod đó được quản lý bởi một ReplicaSet hoặc Deployment).

b. Replication Controller - "Phòng Đảm bảo Số lượng"

  • Nhiệm vụ: Đảm bảo số lượng bản sao (replicas) của một Pod luôn đúng như bạn đã khai báo trong đối tượng ReplicaSet.
  • Cách hoạt động:
  • Nếu nó thấy số lượng Pod hiện tại ít hơn số lượng mong muốn (ví dụ: một Pod bị chết), nó sẽ ngay lập tức tạo ra một Pod mới để bù vào.

4. Cài đặt và Xem Cấu hình

  • kube-controller-manager là một file thực thi (binary) duy nhất, chứa tất cả các controller bên trong nó.
  • Cách xem các tùy chọn cấu hình đang chạy:
  • Với cụm kubeadm: Nó được triển khai như một static Pod trong namespace kube-system. Bạn có thể xem cấu hình trong file manifest của Pod tại /etc/kubernetes/manifests/.
  • Với cụm cài thủ công: Xem trong file service tại /etc/systemd/system/.
  • Cách chung: Dùng lệnh ps aux | grep kube-controller-manager trên Master Node để xem tiến trình đang chạy và các tham số của nó.
  • Tùy chọn cấu hình: Bạn có thể tùy chỉnh hoạt động của các controller. Ví dụ, với Node Controller, bạn có thể thay đổi các tham số thời gian như --pod-eviction-timeout. Bạn cũng có thể dùng cờ --controllers để bật/tắt một số controller cụ thể (mặc định là bật tất cả).

5. "Chốt hạ" cho Kỳ thi CKA 📝

  • kube-controller-manager là một tập hợp của nhiều vòng lặp điều khiển (control loops).
  • Nhiệm vụ chính của nó là theo dõi trạng thái của cụm thông qua API Server và thực hiện các hành động cần thiết để đưa trạng thái hiện tại về trạng thái mong muốn.
  • Hiểu rõ hoạt động của các controller tiêu biểu như Node Controller (và các mốc thời gian của nó) và Replication Controller.
  • Biết cách tìm file cấu hình của nó trong một cụm kubeadm (nó là một static Pod).

kube-controller-manager chính là người hùng thầm lặng, đảm bảo cho cụm Kubernetes của bạn luôn hoạt động đúng như những gì bạn kỳ vọng. Chúc bạn một buổi chiều học tập hiệu quả!

Bình luận