はじめに
OKEのWorker NodeとしてサーバレスのVirtual Nodesを使った時のクラスタバージョンアップ手順を確認します。
2つのVirtual Nodeでクラスタを準備しました。
$ k get node
NAME STATUS ROLES AGE VERSION
10.0.1.150 Ready virtual-node 67m v1.26.2
10.0.1.191 Ready virtual-node 67m v1.26.2
Deploymentで各ノードにPodを一つずつデプロイしています。
$ k get pod -o wide -w
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-748c667d99-ccx7q 1/1 Running 0 3m11s 10.0.5.198 10.0.1.150 <none> <none>
nginx-748c667d99-jnr4z 1/1 Running 0 3m11s 10.0.5.2 10.0.1.191 <none> <none>
バージョンアップ可否の確認
OCIコンソールでバージョンアップ可能であることを確認します。
同様にノードプールにも!
マークが付いています。
バージョンアップ
コンソールのKubernetesの新バージョンを使用できます
をクリックすると以下の画面になり、バージョンアップするバージョンを選択して、アップグレード
をクリックします。
操作はこれだけです。
コントロールプレーンのバージョンアップを実行すると、コントロールプレーン → ノードプル → ノード
とバージョンアップしてくれます。
バージョンアップ中はこのような画面になります。
バージョンアップが終わると、アイコンがグリーンに戻ります。
ノードプールもバージョンアップしています。
バージョンアップ時の動作
バージョンアップ時のクラスタの様子を確認しました。
ノード
従来のManaged Nodeの場合は、新しいバージョンのノードを追加して古いバージョンのノードを削除する動きでしたが、Virtual Nodeの場合はそのノードのままバージョンアップをしているようです。
$ k get node -w
NAME STATUS ROLES AGE VERSION
10.0.1.150 Ready virtual-node 72m v1.26.2
10.0.1.191 Ready virtual-node 72m v1.26.2
10.0.1.150 Ready virtual-node 73m v1.26.2
10.0.1.191 Ready virtual-node 73m v1.27.2
10.0.1.191 Ready virtual-node 73m v1.27.2
10.0.1.150 Ready virtual-node 74m v1.27.2
10.0.1.150 Ready virtual-node 74m v1.27.2
10.0.1.191 Ready virtual-node 74m v1.27.2
(Virtual)kubeletのバージョンも上がっています。
$ k describe node 10.0.1.150 |grep "Kubelet Version"
Kubelet Version: v1.27.2
なお、STATUSは常にReady
となっていますが、何度か試してみたところ、NotReady
となることもありました。
NotReadyの期間が短いため、コマンドで拾えない場合があるのかも知れないですね。
$ k get node -w
NAME STATUS ROLES AGE VERSION
10.0.1.205 Ready virtual-node 13m v1.26.2
10.0.1.220 Ready virtual-node 14m v1.26.2
10.0.1.220 Ready virtual-node 14m v1.26.2
10.0.1.205 NotReady virtual-node 14m v1.26.2
10.0.1.220 Ready virtual-node 15m v1.26.7
10.0.1.205 NotReady virtual-node 14m v1.26.7
10.0.1.205 Ready virtual-node 14m v1.26.7
10.0.1.220 Ready virtual-node 15m v1.26.7
10.0.1.205 Ready virtual-node 17m v1.26.7
10.0.1.220 Ready virtual-node 18m v1.26.7
Pod
わかりづらいのですが、Podが落ちて、同じノードで再作成されています。
2つのPod同時ではありませんが、一つ目のPodの再作成が終わらない状態で2つ目のPodがTerminatingになっているように見えます。
外部から疎通確認まではしていませんが、Virtual Nodeは通常のNodeと比べて、Podが立ち上がるのが遅いので、業務が停止しないようにバージョンアップするには、Node数やReplicasを調整して事前に確認した方が良さそうです。
バージョンアップ時の動きを見ていましたが、クラスタとしてはローリングでバージョンアップしていますが、Podのことまでは考えていないように見えました。
$ k get pod -o wide -w
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-748c667d99-427vj 1/1 Running 0 8m39s 10.0.4.48 10.0.1.220 <none> <none>
nginx-748c667d99-h2nsd 1/1 Running 0 8m39s 10.0.4.159 10.0.1.205 <none> <none>
nginx-748c667d99-h2nsd 1/1 Running 0 12m 10.0.4.159 10.0.1.205 <none> <none>
nginx-748c667d99-427vj 1/1 Running 0 12m 10.0.4.48 10.0.1.220 <none> <none>
nginx-748c667d99-427vj 1/1 Terminating 0 12m 10.0.4.48 10.0.1.220 <none> <none>
nginx-748c667d99-xns85 0/1 Pending 0 0s <none> <none> <none> <none>
nginx-748c667d99-xns85 0/1 ContainerCreating 0 0s <none> 10.0.1.220 <none> <none>
nginx-748c667d99-h2nsd 1/1 Running 0 12m 10.0.4.159 10.0.1.205 <none> <none>
nginx-748c667d99-h2nsd 1/1 Terminating 0 12m 10.0.4.159 10.0.1.205 <none> <none>
nginx-748c667d99-7vq9v 0/1 Pending 0 0s <none> <none> <none> <none>
nginx-748c667d99-h2nsd 1/1 Terminating 0 12m 10.0.4.159 10.0.1.205 <none> <none>
nginx-748c667d99-7vq9v 0/1 Pending 0 0s <none> 10.0.1.205 <none> <none>
nginx-748c667d99-h2nsd 1/1 Terminating 0 12m 10.0.4.159 10.0.1.205 <none> <none>
nginx-748c667d99-7vq9v 0/1 ContainerCreating 0 0s <none> 10.0.1.205 <none> <none>
nginx-748c667d99-h2nsd 0/1 Terminating 0 12m 10.0.4.159 10.0.1.205 <none> <none>
nginx-748c667d99-xns85 0/1 ContainerCreating 0 1s <none> 10.0.1.220 <none> <none>
nginx-748c667d99-7vq9v 0/1 ContainerCreating 0 2s <none> 10.0.1.205 <none> <none>
nginx-748c667d99-xns85 0/1 ContainerCreating 0 2m19s <none> 10.0.1.220 <none> <none>
nginx-748c667d99-7vq9v 0/1 ContainerCreating 0 2m22s <none> 10.0.1.205 <none> <none>
nginx-748c667d99-xns85 1/1 Pending 0 2m34s <none> 10.0.1.220 <none> <none>
nginx-748c667d99-7vq9v 1/1 Pending 0 2m41s <none> 10.0.1.205 <none> <none>
nginx-748c667d99-7vq9v 1/1 Running 0 2m41s 10.0.5.168 10.0.1.205 <none> <none>
nginx-748c667d99-xns85 1/1 Pending 0 2m49s <none> 10.0.1.220 <none> <none>
nginx-748c667d99-xns85 1/1 Running 0 2m51s 10.0.5.101 10.0.1.220 <none> <none>