2023年10月21日土曜日

KubernetesのCNI「flannel」をバージョンアップする手順

先日Kubernetes環境をバージョンアップする手順を記載した。

前回はKubernetes本体のバージョンアップ手順を記載したが、関連コンポーネントであるCRI (Container Runtime Interface)やCNI (Container Network Interface)のバージョンアップについては言及していなかった。

私の自宅Kubernetes環境ではCNIとしてflannelを用いている。本記事ではKubernetesのCNI「flannel」をバージョンアップする手順を記載する。

環境

以下に今回構築する各種ソフトウェアのバージョンを記載する。

  • ホストOS : AlmaLinux 8.6
  • Kubernetes : v1.27.3
  • Docker : 23.0.5
  • CRI : cri-dockerd 0.3.4
  • CNI : flannel v0.21.5 -> v0.22.0

今回の構成の概要図を以下に記載する。

flannelバージョンアップ手順

1, 事前バージョン確認

flannelのバージョンアップ前のバージョン確認をしておく。Dockerのコンテナイメージの情報から、今回のバージョンアップ前のバージョンは、v0.21.5となっていることがわかる。

# docker images | grep flannel
flannel/flannel                             v0.21.5   a6c0cb5dbd21   2 months ago    68.9MB
flannel/flannel-cni-plugin                  v1.1.2    7a2dcab94698   7 months ago    7.97MB

2. 最新のマニフェストファイルを適用

flannelの最新のマニフェストファイルをダウンロードする。

# curl -LO https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

kubectl applyにて更新する。最下行のdaemonset.apps/kube-flannel-dsconfiguredとなっていれば、更新処理が実行される。

# kubectl apply -f kube-flannel.yml
namespace/kube-flannel unchanged
serviceaccount/flannel unchanged
clusterrole.rbac.authorization.k8s.io/flannel unchanged
clusterrolebinding.rbac.authorization.k8s.io/flannel unchanged
configmap/kube-flannel-cfg unchanged
daemonset.apps/kube-flannel-ds configured

3. バージョンアップ完了まで待機

マニフェストファイルを更新すると、ノード単位で順番にPodの再作成がされ自動的にローリングアップデートがされる。最終的に各ノードで動作していたkube-flannel-dsのPodは、新しいバージョンのPodとして起動する。

# kubectl get pod -n=kube-flannel -w
NAME                    READY   STATUS        RESTARTS      AGE
kube-flannel-ds-5bqnn   1/1     Terminating   4 (8d ago)    60d
kube-flannel-ds-mghhs   1/1     Running       2 (35d ago)   60d
kube-flannel-ds-x9mzn   1/1     Running       2 (35d ago)   60d
kube-flannel-ds-5bqnn   0/1     Terminating   4 (8d ago)    60d
kube-flannel-ds-5bqnn   0/1     Terminating   4 (8d ago)    60d
kube-flannel-ds-5bqnn   0/1     Terminating   4 (8d ago)    60d
kube-flannel-ds-fgg2w   0/1     Pending       0             0s
kube-flannel-ds-fgg2w   0/1     Pending       0             0s
kube-flannel-ds-fgg2w   0/1     Init:0/2      0             0s
kube-flannel-ds-fgg2w   0/1     Init:1/2      0             1s
kube-flannel-ds-fgg2w   0/1     PodInitializing   0             7s
kube-flannel-ds-fgg2w   1/1     Running           0             8s
kube-flannel-ds-mghhs   1/1     Terminating       2 (35d ago)   60d
kube-flannel-ds-mghhs   0/1     Terminating       2 (35d ago)   60d
kube-flannel-ds-mghhs   0/1     Terminating       2 (35d ago)   60d
kube-flannel-ds-mghhs   0/1     Terminating       2 (35d ago)   60d
kube-flannel-ds-ztdg7   0/1     Pending           0             0s
kube-flannel-ds-ztdg7   0/1     Pending           0             0s
kube-flannel-ds-ztdg7   0/1     Init:0/2          0             0s
kube-flannel-ds-ztdg7   0/1     Init:1/2          0             1s
kube-flannel-ds-ztdg7   0/1     PodInitializing   0             6s
kube-flannel-ds-ztdg7   1/1     Running           0             7s
kube-flannel-ds-x9mzn   1/1     Terminating       2 (35d ago)   60d
kube-flannel-ds-x9mzn   0/1     Terminating       2 (35d ago)   60d
kube-flannel-ds-x9mzn   0/1     Terminating       2 (35d ago)   60d
kube-flannel-ds-x9mzn   0/1     Terminating       2 (35d ago)   60d
kube-flannel-ds-cz2q4   0/1     Pending           0             0s
kube-flannel-ds-cz2q4   0/1     Pending           0             0s
kube-flannel-ds-cz2q4   0/1     Init:0/2          0             0s
kube-flannel-ds-cz2q4   0/1     Init:1/2          0             1s
kube-flannel-ds-cz2q4   0/1     PodInitializing   0             7s
kube-flannel-ds-cz2q4   1/1     Running           0             9s

4. 事後バージョン確認

flannelのバージョンアップ後のバージョン確認する。事前の確認においてv0.21.5だけだったコンテナイメージにv0.22.0が追加されている。

# docker images | grep flannel
flannel/flannel                                 v0.22.0   38c11b8f4aa1   7 weeks ago     69.8MB
flannel/flannel                                 v0.21.5   a6c0cb5dbd21   2 months ago    68.9MB
flannel/flannel-cni-plugin                      v1.1.2    7a2dcab94698   7 months ago    7.97MB

さらに、Podの詳細情報を確認すると、v0.22.0のコンテナイメージで起動していることが確認できる。

# kubectl describe pod kube-flannel-ds-cz2q4 -n=kube-flannel
Name:                 kube-flannel-ds-cz2q4
Namespace:            kube-flannel

~(中略)~

Containers:
  kube-flannel:
    Container ID:  docker://fcd1857a182c3622a9ba4bed91101e443d384705dcee03c97d0bf179704cec6d
    Image:         docker.io/flannel/flannel:v0.22.0 ★
    Image ID:      docker-pullable://flannel/flannel@sha256:5f83f1243057458e27249157394e3859cf31cc075354af150d497f2ebc8b54db

~(以下略)~

以上で、KubernetesのCNI「flannel」をバージョンアップする手順は完了となる。

0 件のコメント:

コメントを投稿

人気の投稿