HorizontalPodAutoscalerにgeneration/observedGenerationフィールドを追加
概要
HorizontalPodAutoscaler (HPA) リソースが metadata.generation と status.observedGeneration フィールドを生成するようになりました。これにより、HPAの設定変更が正しくコントローラーに反映されているかを確認できるようになります。
背景
metadata.generation と status.observedGeneration は、Kubernetesのリソースで「設定の変更がコントローラーに認識されているか」を確認するための標準的な仕組みです。
metadata.generation: リソースのspecが変更されるたびにインクリメントされる番号status.observedGeneration: コントローラーが最後に処理したgenerationの番号
この2つが一致していれば、コントローラーが最新の設定を認識して処理済みであることがわかります。
多くのKubernetesリソース(Deployment、StatefulSetなど)ではこれが標準的に実装されていますが、HPAにはこれまでなく、設定変更の反映状況をプログラムで確認する手段が限られていました。
詳細
この変更により、HPAの設定を変更した後に kubectl get hpa -o yaml でステータスを確認したり、Kubernetes APIを使ってオートスケーリング設定の同期状態をプログラムで監視したりすることが容易になります。
使用例
kubectl describe hpa my-hpa
# Generationが表示されるようになるmetadata:
generation: 3 # specの変更回数
status:
observedGeneration: 3 # コントローラーが認識している最新のgeneration