

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:
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@servermkdir -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/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.serviceTriể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/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/systemctl daemon-reload
systemctl enable kube-apiserver \
kube-controller-manager kube-scheduler
systemctl start kube-apiserver \
kube-controller-manager kube-schedulerSau khi khởi động, cần chờ vài giây để kube-apiserver hoàn tất quá trình khởi tạo.
Kiểm tra service:
systemctl is-active kube-apiserverKiểm tra chi tiết hơn (bao gồm log):
systemctl status kube-apiserverXem log nếu có lỗi:
journalctl -u kube-apiserverLúc này control plane phải đang chạy. Kiểm tra bằng kubectl:
kubectl cluster-info \
--kubeconfig admin.kubeconfigKết quả ví dụ:
Kubernetes control plane is running at https://127.0.0.1:6443Để 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:
Áp dụng cấu hình:
--authorization-mode=WebhookChế độ 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@serverTạ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.kubeconfigThự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/versionVí 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ế.
