Kubernetes and Cloud Native Associate 無料問題 8 / 10 ・ 分野3: Cloud Native Application Delivery
Deployment の spec.progressDeadlineSeconds について、公式ドキュメントの説明に合うものはどれか。
- 期限を過ぎると、コントローラは新しい ReplicaSet への切り替えをやめ、再試行もしない
- 期限を過ぎると、Kubernetes が1つ前のリビジョンへ Deployment を戻す
- 期限を過ぎると状態に ProgressDeadlineExceeded を示し、再試行は続ける
- ロールアウトを一時停止している間も期限は数えられ、再開すると期限切れになる
正解と解説を見る
正解: C
正解の理由
progressDeadlineSeconds は、Deployment が進まないと報告するまで待つ秒数で、既定は 600 である。期限を過ぎると、状態の条件に type: Progressing・status: "False"・reason: ProgressDeadlineExceeded が示される。ページは、コントローラはそのあとも Deployment の再試行を続けると書いている。イメージの取得の失敗やクォータの不足などで進まなくなったことを、この条件で見つけられる。
違う選択肢
「期限を過ぎると、Kubernetes が1つ前のリビジョンへ Deployment を戻す」… ページは、進まなくなった Deployment に対して Kubernetes が行うのは状態の条件を報告することだけだと注記している。1つ前へ戻すのは、その条件を見た上位の仕組み(オーケストレータ)が行いうることである。
「期限を過ぎると、コントローラは新しい ReplicaSet への切り替えをやめ、再試行もしない」… ページは、期限切れを報告したあとも Deployment コントローラは Deployment の再試行を続けると書いている。
「ロールアウトを一時停止している間も期限は数えられ、再開すると期限切れになる」… ページは、ロールアウトを一時停止している間は期限に照らした進み具合を確かめないと注記している。途中で止めて再開しても、期限切れの条件にはならない。
押さえどころ
この条件は「知らせる」ための仕組みで、Kubernetes 自身は直さない。ロールバックなどの対応は、条件を見た人や上位のツールが行う。minReadySeconds を指定するなら、progressDeadlineSeconds はそれより大きくする必要がある。