Kubernetes API バージョンのサポート状況の確認

対象クラスターが対応する API とフィールドを使ってください。

説明

非推奨となった API は、後の Kubernetes バージョンで提供されなくなる場合があります。提供が終了した API バージョンでオブジェクトを作成・更新すると、要求が失敗する場合があります。リソースの種類と対象クラスターのバージョンに応じて確認する必要があります。

想定される影響

  • クラスターの更新後に、デプロイや運用の自動化が失敗する場合があります。
  • バージョン文字列だけを変えると、フィールドやデフォルト値の違いを見落とし、意図しない構成になる場合があります。

対処方法

  • 対象 Kubernetes バージョンの API 移行ガイドを確認し、マニフェストと API クライアントを対応するバージョンへ移行してください。
  • 必須フィールド、セレクター、デフォルト値の違いを確認し、試験環境で適用してください。API の提供終了は、保存済みオブジェクトの即時削除を意味するものではありません。

例

Deployment の API とセレクターだけを示す既存の抜粋です。apps/v1beta1 の Deployment は Kubernetes 1.16 以降提供されません。実際のデプロイには、セレクターに一致するラベルを持つ Pod template も必要です。

変更前

yaml
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3

apps/v1beta1 を使うため、その API を提供しないクラスターでは要求が拒否されます。

変更後

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx

apps/v1 とセレクターを使います。省略した Pod template と他の必須設定も一致させる必要があります。

参考資料