Upgrade version K8S mà vẫn giữ nguyên IP worker node
Các bước upgrade version K8S mà vẫn muốn giữ nguyên node IP các bước như sau:
- Chọn cluster > Chọn nâng cấp > chọn Chỉ nâng cấp thành phần control-plane
-
Kiểm tra API server
➜ ~ kubectl get node -A NAME STATUS ROLES AGE VERSION pool-tgyk07om-ggzayhz3inp71wg6-node-yv9ngyuq Ready <none> 7m49s v1.30.9 ➜ ~ kubectl version Client Version: v1.32.0 Kustomize Version: v5.5.0 **Server Version: v1.31.5 #### Để ý trường này**
-
Mở firewall để ssh vào node
- Truy cập firewall kengine-xxxxx-public
- mở port SSH
- SSH vào node và chạy tạo script sau:
install_k8s.sh
#!/bin/bash
# Check if version parameter is provided
if [ -z "$1" ]; then
echo "Error: Please provide a Kubernetes version"
echo "Usage: $0 <version> (e.g., $0 v1.31.5)"
exit 1
fi
# Set Kubernetes version from input
KUBE_VERSION=$1
# Create download directory
DOWNLOAD_DIR="/tmp/k8s-install"
mkdir -p "$DOWNLOAD_DIR"
cd "$DOWNLOAD_DIR"
echo "Downloading kubelet version $KUBE_VERSION..."
curl -L "https://dl.k8s.io/$KUBE_VERSION/bin/linux/amd64/kubelet" -o kubelet
# Make kubelet executable
echo "Making kubelet executable..."
chmod +x kubelet
# Move kubelet to /usr/local/bin
echo "Moving kubelet to /usr/local/bin..."
sudo mv kubelet /usr/local/bin/
# Restart kubelet service
echo "Restarting kubelet service..."
sudo systemctl restart kubelet
echo "Installation complete. Kubelet version $KUBE_VERSION has been installed."
# Clean up
cd - > /dev/null
rm -rf "$DOWNLOAD_DIR"
- Chạy script
root@pool-tgyk07om-ggzayhz3inp71wg6-node-yv9ngyuq:~# bash install_k8s.sh v1.31.5
Downloading kubelet version v1.31.5...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 138 100 138 0 0 420 0 --:--:-- --:--:-- --:--:-- 422
100 73.3M 100 73.3M 0 0 4747k 0 0:00:15 0:00:15 --:--:-- 6068k
Making kubelet executable...
Moving kubelet to /usr/local/bin...
Restarting kubelet service...
Installation complete. Kubelet version v1.31.5 has been installed.
- Kiểm tra lại node trên api server
➜ ~ kubectl get node -A
NAME STATUS ROLES AGE VERSION
pool-tgyk07om-ggzayhz3inp71wg6-node-yv9ngyuq Ready <none> 10m v1.31.5
- Tiếp tục thực hiện với các node còn lại
Lưu ý 1:
Khi nâng cấp bằng cách này thì không thể nâng cấp tiếp vì hệ thống k tự cập nhật dc version của worker_pool do thực hiện thủ công
⇒ Nếu muốn nâng cấp lên version tiếp theo liên hệ support để được hỗ trợ vì hệ thống chặn control-plane và worker-pool chênh nhau quá 1 version
Lưu ý 2:
Sau khi nâng cấp xong hãy xoá rule SSH để đảm bảo an toàn cho các worker (chỉ xoá rule đừng xoá cả firewall)
Lưu ý 3:
Nên drain và cordon node được nâng cấp trước khi tiến hành nâng cấp sử dụng lệnh
kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data
Lưu ý 4: Những worker được tạo mới trong pool vào lúc thời điểm trước upgrade sẽ vẫn tạo ở version cũ khởi điểm lúc tạo cụm
Những worker-pool và worker được tạo mới sẽ được tạo version ngang với control plane
➜ ~ kubectl get node -A
NAME STATUS ROLES AGE VERSION
**pool-oncrhzl5-ggzayhz3inp71wg6-node-ecevvmf8 Ready <none> 13s v1.32.1 ### Pool mới tạo ra sẽ dùng version mới**
**pool-tgyk07om-ggzayhz3inp71wg6-node-fpxes1jr Ready <none> 65s v1.30.9 ### Scale lên vẫn version cũ**
pool-tgyk07om-ggzayhz3inp71wg6-node-yv9ngyuq Ready <none> 23m v1.32.1