やったこと
- v1.26からv.29にアップデート
確認
ubuntu04,05がコントロールプレーンでubuntu01,02がワーカーノード
❯ kubectl get node -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME ubuntu01 Ready <none> 329d v1.26.0 192.168.16.11 <none> Ubuntu 20.04.4 LTS 5.15.0-91-generic containerd://1.6.18 ubuntu02 Ready <none> 329d v1.26.3 192.168.16.12 <none> Ubuntu 20.04.6 LTS 5.15.0-91-generic containerd://1.6.18 ubuntu04 Ready control-plane 329d v1.26.3 192.168.16.14 <none> Ubuntu 20.04.4 LTS 5.15.0-1046-intel-iotg containerd://1.7.13 ubuntu05 Ready control-plane 329d v1.26.0 192.168.16.15 <none> Ubuntu 20.04.4 LTS 5.15.0-1046-intel-iotg containerd://1.6.18
root@ubuntu04:~# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"26", GitVersion:"v1.26.3", GitCommit:"9e644106593f3f4aa98f8a84b23db5fa378900bd", GitTreeState:"clean", BuildDate:"2023-03-15T13:38:47Z", GoVersion:"go1.19.7", Compiler:"gc", Platform:"linux/amd64"}
【共通】レポジトリの変更
Ubuntuの場合は apt.kubernetes.io からダウンロードしていたが廃止されてしまった
pkgs.k8s.io: Introducing Kubernetes Community-Owned Package Repositories | Kubernetes
まずは apt installできるように再設定する 任意のバージョンを入れる
mkdir -p /etc/apt/keyrings/ curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ / EOF
apt update してから確認 pkgs.k8s.ioになっているはず
root@ubuntu04:~# apt-cache madison kubeadm | grep 1.27 kubeadm | 1.27.10-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb Packages kubeadm | 1.27.9-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb Packages kubeadm | 1.27.8-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb Packages kubeadm | 1.27.7-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb Packages kubeadm | 1.27.6-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb Packages kubeadm | 1.27.5-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb Packages kubeadm | 1.27.4-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb Packages kubeadm | 1.27.3-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb Packages kubeadm | 1.27.2-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb Packages kubeadm | 1.27.1-1.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb Packages kubeadm | 1.27.0-2.1 | https://pkgs.k8s.io/core:/stable:/v1.27/deb Packages
【共通】インストール
apt-mark unhold kubeadm kubelet kubectl apt install -y kubeadm kubelet kubectl apt-mark hold kubeadm kubelet kubectl
確認 この場合は1.28時点のもの
kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"28", GitVersion:"v1.28.6", GitCommit:"be3af46a4654bdf05b4838fe94e95ec8c165660c", GitTreeState:"clean", BuildDate:"2024-01-17T13:47:00Z", GoVersion:"go1.20.13", Compiler:"gc", Platform:"linux/amd64"}
【1台目のコントロールプレーンのみ】
クラスターのアップデートを行うために初回のみplan実行
kubeadm upgrade plan
以下のように表示されれば成功
You can now apply the upgrade by executing the following command:
kubeadm upgrade apply v1.27.10
_____________________________________________________________________
The table below shows the current state of component configs as understood by this version of kubeadm.
Configs that have a "yes" mark in the "MANUAL UPGRADE REQUIRED" column require manual config upgrade or
resetting to kubeadm defaults before a successful upgrade can be performed. The version to manually
upgrade to is denoted in the "PREFERRED VERSION" column.
API GROUP CURRENT VERSION PREFERRED VERSION MANUAL UPGRADE REQUIRED
kubeproxy.config.k8s.io v1alpha1 v1alpha1 no
kubelet.config.k8s.io v1beta1 v1beta1 no
_____________________________________________________________________
言われたとおりに実行
kubeadm upgrade apply v1.27.10
【2台目以降のコントロールプレーン→ワーカーノードのみ】
【共通】インストールは同じなのでaptでアップデートする。その後
クラスターからノード外す
kubectl drain <ノード名> --ignore-daemonsets --delete-emptydir-data
アップデート
kubeadm upgrade node systemctl restart kubelet
kubectl uncordon <ノード名>