Hướng dẫn mở rộng cụm Kubernetes với Worker Node

Chuẩn bị môi trường hệ thống cho Worker Node

Sau khi hoàn tất việc thiết lập nút điều khiển (control-plane), bước tiếp theo là tích hợp các nút làm việc (worker node) vào cụm. Quá trình này yêu cầu cấu hình hệ thống tương đồng với nút master để đảm bảo tính tương thích.

1. Cấu hình cơ bản và mạng

Trước tiên, cần định danh máy chủ và điều chỉnh các tham số kernel cần thiết. Giả sử địa chỉ IP của master là 192.168.50.10 và node mới là 192.168.50.11.

Cập nhật bảng phân giải tên miền cục bộ:

echo "192.168.50.10 k8s-control" >> /etc/hosts
echo "192.168.50.11 k8s-worker01" >> /etc/hosts

Tắt chế độ swap vì Kubernetes yêu cầu tắt tính năng này để hoạt động ổn định:

swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

Vô hiệu hóa tường lửa để tránh xung đột mạng nội bộ cụm:

systemctl stop ufw
systemctl disable ufw

Thiết lập múi giờ và cấu hình chuyển tiếp IP cho mạng bridge:

timedatectl set-timezone Asia/Ho_Chi_Minh

cat > /etc/sysctl.d/k8s-network.conf <<EOF
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

sysctl --system</code>

2. Cài đặt Container Runtime (Containerd)

Kể từ phiên bản 1.24, Kubernetes đã loại bỏ hỗ trợ trực tiếp Docker shim và chuyển sang sử dụng containerd. Cần cài đặt và cấu hình để tương thích với systemd cgroup.

Cài đặt gói qua trình quản lý gói:

apt update
apt install -y containerd

Tạo file cấu hình mặc định và điều chỉnh tham số:

mkdir -p /etc/containerd
containerd config default | tee /etc/containerd/config.toml

# Kích hoạt systemd cgroup driver
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml

# Sử dụng mirror registry trong nước để tăng tốc độ pull ảnh pause
sed -i 's|registry.k8s.io/pause:3.8|registry.aliyuncs.com/google_containers/pause:3.8|g' /etc/containerd/config.toml

systemctl daemon-reload
systemctl restart containerd

3. Triển khai công cụ Kubernetes (kubeadm)

Để đồng bộ phiên bản với control-plane, cần cài đặt bộ công cụ kubelet, kubeadmkubectl cùng phiên bản (ví dụ v1.32.2). Sử dụng kho lưu trữ thay thế để đảm bảo tốc độ tải về.

Thêm khóa GPG và định nghĩa nguồn cài đặt:

mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.32/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.32/deb/ /" > /etc/apt/sources.list.d/kubernetes.list

Cài đặt và ghim phiên bản để tránh tự động nâng cấp không mong muốn:

apt update
apt install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl

Xác nhận phiên bản đã cài đặt chính xác:

kubeadm version

Kết nối Worker Node vào cụm

Trên nút control-plane, lệnh kubeadm init sẽ sinh ra một chuỗi lệnh join. Sử dụng chuỗi này trên worker node để thực hiện gia nhập.

Cú pháp lệnh thường có dạng:

kubeadm join <control-plane-endpoint> --token <token> --discovery-token-ca-cert-hash sha256:<hash>

Sau khi thực thi thành công, kiểm tra trạng thái cụm từ master:

kubectl get nodes

Kết quả sẽ hiển thị worker node mới với trạng thái Ready sau khi các pod mạng khởi động xong.

Khôi phục lệnh Join khi bị quên

Trong trường hợp không lưu lại lệnh join sau khi khởi tạo cluster, bạn có thể tạo lại token mới từ nút master. Lệnh này sẽ xuất ra chuỗi command đầy đủ để sử dụng cho các node mới.

kubeadm token create --print-join-command

Chuỗi kết quả trả về có thể sao chép và chạy trực tiếp trên các worker node cần bổ sung vào hạ tầng.

Thẻ: Kubernetes kubeadm containerd cluster-architecture linux-sysadmin

Đăng vào ngày 6 tháng 6 lúc 20:57