💨

PodDisruptionBudget の deprecated となる API Version への対処

2023/06/23に公開

migration ガイド

Deprecated API Migration Guide

方法

マイグレーションガイドに特別なことは明記されていないため、対応は policy/v1beta1 から policy/v1 へ変更するだけとなる

検証

念の為、事前に以下の対応を行い policy/v1 に変更した状態で正常動作するか開発環境などを使って検証する

  • レプリカ数を2に変更
  • apiVersionpolicy/v1に変更
  • maxUnavailable を1に設定
$ kubectl get pdb -o yaml hoge

apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  labels:
    app: hoge
  name: hoge
...
spec:
  maxUnavailable: 1

下記コマンドで取得したノードに対して drain を行い、少なくとも1つの Pod は生きているように制御されるかを確認していく

$ kubectl get pods -o wide -l app=hoge
$ kubectl drain --delete-emptydir-data --ignore-daemonsets {ノード}

drain を実施後に下記コマンドで監視すると、一斉に Pod が削除されることはなく必ず1つの Pod は生きていることがわかる

$ kubectl get rs -w -l app=hoge

NAME              DESIRED   CURRENT   READY   AGE
...
hoge-xxxxxxxxxx   2         2         2       25m
hoge-xxxxxxxxxx   2         1         1       25m
hoge-xxxxxxxxxx   2         2         1       25m
hoge-xxxxxxxxxx   2         2         2       30m

Discussion