先日Kubernetes環境をバージョンアップする手順を記載した。
前回はKubernetes本体のバージョンアップ手順を記載したが、関連コンポーネントであるCRI (Container Runtime Interface)やCNI (Container Network Interface)のバージョンアップについては言及していなかった。
私の自宅Kubernetes環境ではCRIとしてcri-dockerdを用いている。本記事ではKubernetesのCRI「cri-dockerd」をバージョンアップする手順を記載する。
環境
以下に今回構築する各種ソフトウェアのバージョンを記載する。
- ホストOS : AlmaLinux 8.6
- Kubernetes : v1.27.3
- Docker : 23.0.5
- CRI : cri-dockerd 0.3.2 -> 0.3.4
- CNI : flannel v0.22.0
今回の構成の概要図を以下に記載する。
cri-dockerdバージョンアップ手順
1. 事前バージョン確認
cri-dockerdのバージョンアップ前のバージョン確認をしておく。今回のバージョンアップ前のバージョンは、0.3.2となっていることがわかる。
# cri-dockerd --buildinfo
Program: cri-dockerd
Version: 0.3.2 (HEAD)
GitCommit: HEAD
Go version: go1.20.4
2. drain実行 (Podの退避・Podの配置の禁止)
一時的にcri-dockerd
のサービス再起動が発生することから、念のためバージョンアップ対象ノードからPodを退避(drain)したのち、Podの配置を禁止(cordon)する。
# kubectl drain t1051kube --ignore-daemonsets
node/t1051kube cordoned
~(以下略)~
drainされると、ノードのステータスがSchedulingDisabled
となる。
# kubectl get node
NAME STATUS ROLES AGE VERSION
t1051kube Ready,SchedulingDisabled control-plane 62d v1.27.3
t1052kube Ready control-plane 62d v1.27.3
t1053kube Ready control-plane 34d v1.27.3
3. cri-dockerdのバージョンアップ
git clone
にてcri-dockerdのリポジトリから必要なファイルを入手する。
# git clone https://github.com/Mirantis/cri-dockerd.git
cri-dockerdはGo言語にてビルドする必要があるため、そちらに必要となるファイルも入手する。
# wget https://storage.googleapis.com/golang/getgo/installer_linux
# chmod +x ./installer_linux
# ./installer_linux
cri-dockerdの公式手順に従い、再インストールを行う。
# cd cri-dockerd/
# mkdir -p bin
# /root/.go/bin/go build -o bin/cri-dockerd
# install -o root -g root -m 0755 bin/cri-dockerd /usr/local/bin/cri-dockerd
# cp -af packaging/systemd/* /etc/systemd/system
# sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service
最後にcri-dockerdのサービスを再起動する。
# systemctl daemon-reload
# systemctl restart cri-docker.service
4. uncordon実行
バージョンアップが完了したので、対象ノードのcordon状態を解消するため、uncordonを実行する。
# kubectl uncordon t1051kube
最終的にノードがバージョンアップされた状態でReady
となった。
# kubectl get node
NAME STATUS ROLES AGE VERSION
t1051kube Ready control-plane 62d v1.27.3
t1052kube Ready control-plane 62d v1.27.3
t1053kube Ready control-plane 34d v1.27.3
5. 事後バージョン確認
cri-dockerdのバージョンアップ後のバージョン確認する。事前の確認において0.3.2だったものが0.3.4となっていることがわかる。
# cri-dockerd --buildinfo
Program: cri-dockerd
Version: 0.3.4 (HEAD)
GitCommit: HEAD
Go version: go1.20.6
6. 手順1~5を残りのノードに対して繰り返す
残りのノードに対してもdrain、バージョンアップ、uncordonを繰り返しながらローリングアップデートを実行する。
以上で、KubernetesのCRI「cri-dockerd」をバージョンアップする手順は完了となる。
0 件のコメント:
コメントを投稿