前編でkubeadmを用いたkubeadmクラスタを作成しました。
CKAの出題範囲である、kubeadmによるクラスタのバージョンアップを試してみます。
公式ドキュメントにしたがって進めます。
コントローラーのバージョンアップ
kubeadmのバージョンアップ
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.26.0-00 && \
apt-mark hold kubeadm
1.26.0がインストールされました。
$ kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"26", GitVersion:"v1.26.0", GitCommit:"b46a3f887ca979b1a5d14fd39cb1af43e7e5d12d", GitTreeState:"clean", BuildDate:"2022-12-08T19:57:06Z", GoVersion:"go1.19.4", Compiler:"gc", Platform:"linux/amd64"}
kubeadm upgrade plan
kubeadm upgrade apply v1.26.0
drain
$ kubectl drain controller --ignore-daemonsets
node/controller already cordoned
Warning: ignoring DaemonSet-managed Pods: calico-system/calico-node-vkjq6, calico-system/csi-node-driver-5zh6x, kube-system/kube-proxy-6krvm
evicting pod calico-apiserver/calico-apiserver-64459cbbd7-vk5ld
pod/calico-apiserver-64459cbbd7-vk5ld evicted
node/controller drained
kubeletのバージョンアップ
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet=1.26.0-00 kubectl=1.26.0-00 && \
apt-mark hold kubelet kubectl
systemctl daemon-reload
systemctl restart kubelet
CRIのバージョンアップ
CRIにCRI-Oを使用しているので、これもあわせてバージョンアップします。
公式の手順にしたがいます。
OS=Debian_11
VERSION=1.25
# 旧バージョン用のファイルを削除する
rm /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list
VERSION=1.26
# 新バージョン用のファイルをダウンロードする
echo "deb http://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list
curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/Release.key | apt-key add -
apt update
apt install cri-o cri-o-runc
uncordon
$ kubectl uncordon controller
node/controller uncordoned
完了
以下のとおりコントローラーを1.26.0にバージョンアップできました。
$ kubectl get node
NAME STATUS ROLES AGE VERSION
controller Ready control-plane 14h v1.26.0
worker Ready <none> 13h v1.25.0
ワーカーのバージョンアップ
kubeadmのバージョンアップ
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.26.0-00 && \
apt-mark hold kubeadm
kubeadm upgrade node
drain
$ kubectl drain worker --ignore-daemonsets
node/worker already cordoned
Warning: ignoring DaemonSet-managed Pods: calico-system/calico-node-hg8b7, calico-system/csi-node-driver-ftw9b, kube-system/kube-proxy-ghnl5
evicting pod tigera-operator/tigera-operator-64db64cb98-rtpx7
evicting pod calico-system/calico-typha-88f68649f-kd2gk
evicting pod calico-apiserver/calico-apiserver-64459cbbd7-b7zpc
evicting pod calico-apiserver/calico-apiserver-64459cbbd7-xlb7q
evicting pod calico-system/calico-kube-controllers-5f9dc85578-9wkmp
evicting pod default/whoami-deploy-6d757cc7f6-srfwl
evicting pod default/whoami-deploy-6d757cc7f6-9fk6b
evicting pod kube-system/coredns-787d4945fb-7pq22
evicting pod kube-system/coredns-787d4945fb-mdffl
pod/whoami-deploy-6d757cc7f6-srfwl evicted
pod/tigera-operator-64db64cb98-rtpx7 evicted
pod/whoami-deploy-6d757cc7f6-9fk6b evicted
pod/calico-kube-controllers-5f9dc85578-9wkmp evicted
pod/calico-apiserver-64459cbbd7-xlb7q evicted
pod/calico-apiserver-64459cbbd7-b7zpc evicted
pod/coredns-787d4945fb-mdffl evicted
pod/coredns-787d4945fb-7pq22 evicted
pod/calico-typha-88f68649f-kd2gk evicted
node/worker drained
kubeletのバージョンアップ
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet=1.26.0-00 kubectl=1.26.0-00 && \
apt-mark hold kubelet kubectl
systemctl daemon-reload
systemctl restart kubelet
CRI-Oのバージョンアップ
コントローラーと同じ。
uncordon
$ kubectl uncordon worker
node/worker uncordoned
完了
$ kubectl get node
NAME STATUS ROLES AGE VERSION
controller Ready control-plane 15h v1.26.0
worker Ready <none> 13h v1.26.0
おわり
以上でコントローラ、ワーカーともに1.26にバージョンアップできました。