やったこと
- 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 <ノード名>