Thứ Ba, 14/04/2026, 17:00 (GMT+0)

[Part 5] Khởi tạo Kubernetes Control Plane trong Series Xây Dựng K8s Cluster

Quay lại Trang chủ Blog
Trên trang này

Sau khi etcd đã được khởi tạo và sẵn sàng, chúng ta đã có “bộ nhớ” cho toàn bộ cluster. Bước tiếp theo là triển khai control plane – tập hợp các thành phần chịu trách nhiệm điều phối và quản lý toàn bộ hệ thống Kubernetes.

Control plane đóng vai trò trung tâm, nơi tiếp nhận request, đưa ra quyết định scheduling và đảm bảo trạng thái mong muốn của cluster luôn được duy trì.

Trong phần này, các thành phần sau sẽ được triển khai trên node server:

  • kube-apiserver
  • kube-controller-manager
  • kube-scheduler

Bước 1: Copy các binary và file cấu hình lên server

Từ jumpbox, thực hiện copy các binary Kubernetes và file cấu hình cần thiết lên node server:

scp \

  downloads/controller/kube-apiserver \

  downloads/controller/kube-controller-manager \

  downloads/controller/kube-scheduler \

  downloads/client/kubectl \

  units/kube-apiserver.service \

  units/kube-controller-manager.service \

  units/kube-scheduler.service \

  configs/kube-scheduler.yaml \

  configs/kube-apiserver-to-kubelet.yaml \

Kết nối vào node server: 

ssh root@server

Bước 2: Chuẩn bị môi trường và cài đặt binary

Tạo thư mục cấu hình Kubernetes:

mkdir -p /etc/kubernetes/config

mkdir -p /var/lib/kubernetes/ 

Cài đặt các file binary của Kubernetes:

  mv kube-apiserver \

kube-controller-manager \

kube-scheduler kubectl \

/usr/local/bin/

Bước 3: Cấu hình Kubernetes API Server

Triển khai các certificate, key và file cấu hình cần thiết:

  mkdir -p /var/lib/kubernetes/

  mv ca.crt ca.key \

kube-api-server.key kube-api-server.crt \

service-accounts.key service-accounts.crt \

encryption-config.yaml \

/var/lib/kubernetes/

Cấu hình systemd service: 

mv kube-apiserver.service \

  /etc/systemd/system/kube-apiserver.service

Bước 4: Cấu hình Controller Manager

Triển khai kubeconfig:

mv kube-controller-manager.kubeconfig /var/lib/kubernetes/

Cấu hình systemd service: 

mv kube-controller-manager.service /etc/systemd/system/

Bước 5: Cấu hình Scheduler

Triển khai kubeconfig:

mv kube-scheduler.kubeconfig /var/lib/kubernetes/

Triển khai file cấu hình: 

mv kube-scheduler.yaml /etc/kubernetes/config/

Cấu hình systemd service:

mv kube-scheduler.service /etc/systemd/system/

Bước 6: Khởi động control plane 

systemctl daemon-reload

systemctl enable kube-apiserver \

kube-controller-manager kube-scheduler

systemctl start kube-apiserver \

kube-controller-manager kube-scheduler

Sau khi khởi động, cần chờ vài giây để kube-apiserver hoàn tất quá trình khởi tạo. 

Bước 7: Kiểm tra trạng thái

Kiểm tra service:

systemctl is-active kube-apiserver

Kiểm tra chi tiết hơn (bao gồm log):

systemctl status kube-apiserver

Xem log nếu có lỗi:

journalctl -u kube-apiserver

Bước 8: Xác minh control plane 

Lúc này control plane phải đang chạy. Kiểm tra bằng kubectl:

kubectl cluster-info \

  --kubeconfig admin.kubeconfig

Kết quả ví dụ:

Kubernetes control plane is running at https://127.0.0.1:6443

Bước 9: Cấu hình RBAC cho Kubelet

Để API Server có thể tương tác với kubelet trên các worker node, cần cấu hình RBAC phù hợp.

Việc này cho phép:

  • truy xuất metrics
  • xem logs
  • thực thi lệnh trong Pod

Áp dụng cấu hình:

--authorization-mode=Webhook

Chế độ Webhook sử dụng API SubjectAccessReview để kiểm tra quyền truy cập.

Các lệnh trong phần này chỉ cần chạy trên server.

ssh root@server

Tạo ClusterRole system:kube-apiserver-to-kubelet với quyền truy cập Kubelet API:

kubectl apply -f kube-apiserver-to-kubelet.yaml \

  --kubeconfig admin.kubeconfig

Bước 10: Xác minh từ bên ngoài

Thực hiện từ jumpbox:

Gửi HTTP request lấy thông tin version Kubernetes:

curl --cacert ca.crt \

  https://server.kubernetes.local:6443/version

Ví dụ kết quả:

 "major": "1",

  "minor": "32",

  "gitVersion": "v1.32.3",

  "gitCommit": "32cc146f75aad04beaaa245a7157eb35063a9f99",

  "gitTreeState": "clean",

  "buildDate": "2025-03-11T19:52:21Z",

  "goVersion": "go1.23.6",

  "compiler": "gc",

  "platform": "linux/arm64"

Tại thời điểm này, control plane đã được khởi tạo và sẵn sàng tiếp nhận request.

Trong phần tiếp theo, các worker node sẽ được triển khai để hoàn thiện một Kubernetes cluster có thể chạy workload thực tế.

#CloudWave Radar
#CloudWave Radar
Sovereign Cloud không chỉ là đặt máy chủ trong nước. Với bối cảnh pháp lý dữ liệu mới tại Việt Nam, đây đang trở thành bài toán hạ tầng quan trọng cho doanh nghiệp Việt và doanh nghiệp nước ngoài hoạt động tại Việt Nam
Sovereign Cloud - Đám mây chủ quyền là gì? Và vì sao doanh nghiệp hoạt động tại Việt Nam nên quan tâm từ bây giờ?
Tiếp tục đọc