インフラ系SEの技術メモ

雑なエンジニアが低信頼性のメモを書いています。参考程度にとどめてください。

(Kubernetes)DeploymentのREADYの数がUP-TO-DATE/AVAILABLEと一致しているわけではない

知らなかった

Deploymentにて3つ展開されているPodを一つ消すと

$ kubectl get pod
NAME                         READY   STATUS    RESTARTS   AGE
nginx-test-59bcbd985-86fs4   1/1     Running   0          13m
nginx-test-59bcbd985-bqjt9   1/1     Running   0          3d4h
nginx-test-59bcbd985-cxpfb   1/1     Running   0          15m

こんな感じでPodが作り直されます。

nginx-test-59bcbd985-bqjt9   1/1     Terminating   0          3d4h
nginx-test-59bcbd985-drszp   0/1     Pending       0          0s
nginx-test-59bcbd985-drszp   0/1     Pending       0          0s
nginx-test-59bcbd985-drszp   0/1     ContainerCreating   0          0s
nginx-test-59bcbd985-drszp   0/1     ContainerCreating   0          1s
nginx-test-59bcbd985-drszp   1/1     Running             0          2s
nginx-test-59bcbd985-bqjt9   1/1     Terminating         0          3d4h
nginx-test-59bcbd985-bqjt9   0/1     Terminating         0          3d4h

その時にDeploymentとReplicaSetの値を見ていると気になる動きをしていました。

DeploymentのREADYの数がUP-TO-DATE/AVAILABLEと一致していない

レプリカセットはこんな感じ。

$ kubectl get rs -w
NAME                   DESIRED   CURRENT   READY   AGE
nginx-test-59bcbd985   3         3         3       3d4h
nginx-test-59bcbd985   3         2         2       3d4h
nginx-test-59bcbd985   3         3         2       3d4h
nginx-test-59bcbd985   3         3         3       3d4h

想定通り。要求しているのは3だけど一時的に2になるよね・・という話。

しかしデプロイメントは

$ kubectl get deployment -w
NAME         READY   UP-TO-DATE   AVAILABLE   AGE
nginx-test   3/3     3            3           18d
nginx-test   2/3     2            2           18d
nginx-test   2/3     3            2           18d
nginx-test   3/3     3            3           18d

UP-TO-DATEが2になってる瞬間がある・・!

ここはおそらくCURRENTから引っ張ってきているんでしょうね。ややこしや・・