2023年10月14日土曜日

KubernetesのCRI「cri-dockerd」をバージョンアップする手順

先日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 件のコメント:

コメントを投稿

人気の投稿