🎃

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

2023/06/29に公開

migration ガイド

Deprecated API Migration Guide

方法

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

ただし、targetAverageUtilization が設定されている場合は以下の様に書き換える必要があるので注意が必要となる

修正前

...
  - type: Resource
    resource:
      name: cpu
      targetAverageUtilization: 50

修正後

...
  - type: Resource
    resource:
      name: cpu
      target:
        averageUtilization: 50
        type: Utilization

検証

念の為、 autoscaling/v2 に変更した状態で正常動作するか開発環境などを使って検証する

$ kubectl get hpa -o yaml hoge

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  labels:
    app: hoge
  name: hoge
...

API Version が autoscaling/v2 であることが確認できたら、負荷試験シナリオなどを流して一時的に負荷をかけてPod の状態を監視しながらオートスケールがうまくいっているか確認すると良い

例えば、こんな感じの動きが確認できると良い

$ kubectl get pods -o wide -l app=hoge -w

NAME         READY   STATUS              RESTARTS   AGE     IP               NODE   NOMINATED NODE   READINESS GATES
hoge-xxxxx   1/1     Running             0          17h     xxx.xxx.xxx.xxx  hoge   <none>           <none>
hoge-yyyyy   0/1     Pending             0          0s      <none>           <none> <none>           <none>
hoge-yyyyy   0/1     Pending             0          0s      <none>           fuga   <none>           <none>
hoge-yyyyy   0/1     ContainerCreating   0          0s      <none>           fuga   <none>           <none>
hoge-yyyyy   0/1     Running             0          1s      yyy.yyy.yyy.yyy  fuga   <none>           <none>
hoge-yyyyy   1/1     Running             0          61s     yyy.yyy.yyy.yyy  fuga   <none>           <none>
hoge-yyyyy   1/1     Terminating         0          8m16s   yyy.yyy.yyy.yyy  fuga   <none>           <none>
hoge-yyyyy   0/1     Terminating         0          9m37s   yyy.yyy.yyy.yyy  fuga   <none>           <none>
hoge-yyyyy   0/1     Terminating         0          9m37s   yyy.yyy.yyy.yyy  fuga   <none>           <none>
hoge-yyyyy   0/1     Terminating         0          9m37s   yyy.yyy.yyy.yyy  fuga   <none>           <none>

Discussion