GKE クラスタで Kubernetes ベータ版 API を使用する


Kubernetes ベータ版 API を使用して、Google Kubernetes Engine(GKE)クラスタの新機能にアクセスします。バージョン 1.24 以降で導入されたベータ版 API を使用するには、ベータ版 API を構成します。

Kubernetes API での新機能導入の仕組み

GKE クラスタは、コントロール プレーンとワーカーノードで構成されます。コントロール プレーンによって API サーバーが公開され、さらに Kubernetes API が公開されます。これにより、エンドユーザー、内部コンポーネント、外部コンポーネントが通信できるようになります。この API は時間の経過とともに進化し、新しい機能がアルファ版またはベータ版で導入されます。その後、一般提供(GA)に移行するか、新しいマイナー バージョンで非推奨になり削除されます。

アルファ版 API はアルファ クラスタでのみ使用できますが、ベータ版 API はすべてのタイプの GKE クラスタで使用できます。Kubernetes バージョン 1.24 以降、新しいベータ版 API は、新しいクラスタではデフォルトで無効になっています。1.24 より前のバージョンを実行している既存のクラスタでは、既存のベータ版 API は引き続き有効になりますが、自動的に有効になったベータ版 API(1.24 より前に導入)と手動で有効にしたベータ版 API(1.24 以降で導入)を既存のクラスタで無効にすることはできません。すべてのクラスタで、バージョン 1.24 より前に導入された既存のベータ版 API はデフォルトで有効になり、既存のベータ版 API の新しいバージョンもデフォルトで有効になります。

たとえば、v1beta1 API が Kubernetes バージョン 1.22 で導入された場合、このベータ版 API の新しいバージョン(v1beta3 など)は、Kubernetes バージョン 1.25 に導入され、自動的に有効になります。これは、これが既存のベータ版 API の新しいバージョンであり、完全に新規のベータ版 API ではないためです。ただし、Kubernetes バージョン 1.24 以降で導入された v1beta1 バージョンの新しいベータ版 API は、デフォルトで無効になっています。

バージョン 1.24 以降で導入されたベータ版 API を使用するには、クラスタとリソースごとにベータ版 API を構成する必要があります。API は、クラスタの作成時または既存のクラスタで有効にすることができます。クラスタのマイナー バージョンで使用可能なベータ版 API を確認するには、利用可能なベータ版 API をご覧ください。

有効にしたベータ版 API は、非推奨になり、クラスタがマイナー バージョンにアップグレードされ、そのバージョンで API が削除されるまで有効です。クラスタで有効になっているベータ版 API を確認するには、有効になっているベータ版 API を確認するをご覧ください。

利用可能なベータ版 API

GKE クラスタの Kubernetes ベータ版 API のサブセットを有効にできます。他のベータ版 API は、以下の理由により使用できません。

  • ベータ版 API が、一般提供前の Kubernetes 機能に依存している。
  • ベータ版 API が安全でない。
  • ベータ版 API が Autopilot と互換性がない。

ベータ版 API と、それらが導入された対応するマイナー バージョンについては、次の表をご覧ください。

Kubernetes のバージョン Kubernetes のこのマイナー バージョンで追加されたベータ版 API GKE で利用可能 メモ
1.31
  • storage.k8s.io/v1beta1/volumeattributesclasses
  • networking.k8s.io/v1beta1/ipaddresses
  • networking.k8s.io/v1beta1/servicecidrs
  • storage.k8s.io/v1beta1/volumeattributesclasses
  • networking.k8s.io/v1beta1/ipaddresses
  • networking.k8s.io/v1beta1/servicecidrs

両方の networking.k8s.io API を同時に有効にする必要があります。これにより、バージョン 1.31.1-gke.1361000 以降を実行している GKE クラスタで、複数のサービス CIDR の Kubernetes ベータ版機能を有効にできます。詳細については、2024 年 10 月 4 日の GKE リリースノートをご覧ください。

1.29
  • なし
  • admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies
  • admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings
両方の API を同時に有効にする必要があります。これにより、Validating Admission Policy のベータ版機能が有効になります。
1.28
  • admissionregistration.k8s.io/v1beta1/validatingadmissionpolicies
  • admissionregistration.k8s.io/v1beta1/validatingadmissionpolicybindings
  • なし
1.27
  • authentication.k8s.io/v1beta1/selfsubjectreviews
  • authentication.k8s.io/v1beta1/selfsubjectreviews

ベータ版 API を使用する前の考慮事項

Kubernetes ベータ版 API には Kubernetes の非推奨ポリシーが適用されます。ベータ版 API が非推奨になった場合は、その使用を中止する必要があります。詳細については、ベータ版 API の非推奨をご覧ください。

始める前に

作業を始める前に、次のことを確認してください。

  • Google Kubernetes Engine API を有効にする。
  • Google Kubernetes Engine API の有効化
  • このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化する。すでに gcloud CLI をインストールしている場合は、gcloud components update を実行して最新のバージョンを取得する。

ベータ版 API を構成する

ベータ版 API は、クラスタごと / リソースごとに有効にされます。API は、クラスタの作成時に有効にするか、または既存のクラスタに対して有効にすることができます。

これらのコマンドのベータ版 API リソースを一覧表示するには、表現 {group}/{version}/{resource} を使用します。バージョンはベータ版である必要があります。この表現の有効な例は authentication.k8s.io/v1beta1/selfsubjectreviews です。

次のセクションのコマンドでは、次の変数を置き換えます。

  • CLUSTER_NAME: 更新するクラスタの名前。
  • LIST_OF_APIS: 有効にするベータ版 API のリスト(カンマ区切りのリスト)。
  • COMPUTE_REGION: 新しいクラスタの Compute Engine のリージョン。ゾーンクラスタの場合は、--zone=COMPUTE_ZONE を使用します。

ベータ版 API を有効にして新しいクラスタを作成する

有効にする一連のベータ版 API を指定して新しいクラスタを作成します。

gcloud container clusters create-auto CLUSTER_NAME  \
    --enable-kubernetes-unstable-apis=LIST_OF_APIS \
    --region=COMPUTE_REGION

既存のクラスタでベータ版 API を有効にする

既存のクラスタで一連のベータ版 API を有効にします。

gcloud container clusters update CLUSTER_NAME  \
    --enable-kubernetes-unstable-apis=LIST_OF_APIS \
    --region=COMPUTE_REGION

既存のクラスタでベータ版 API を無効にする

クラスタですでに有効になっているベータ版 API は無効できません。ベータ版 API は、非推奨になり、マイナー バージョンにアップグレードされ、そのバージョンで削除されるまで、利用可能です。詳細については、ベータ版 API の非推奨をご覧ください。

有効になっているベータ版 API を確認する

GKE クラスタで有効になっているベータ版 API を確認します。

gcloud container clusters describe CLUSTER_NAME \
    --region=COMPUTE_REGION \
    --format="value(enableK8sBetaApis.enabledApis)"

ベータ版 API の非推奨

有効にしたベータ版 API は、非推奨になり、クラスタがマイナー バージョンにアップグレードされ、このバージョンで API が削除されるまで、有効です。

ベータ版 API は通常、非推奨になる前に 3 つのマイナー バージョンである、新しいベータ版、安定版、あるいは置換なしが推奨されます。ベータ版 API バージョンは、サポート終了後に 3 つのマイナー バージョンで削除されます。非推奨で、今後の Kubernetes マイナー バージョンで削除されるベータ版 API を使用している場合、サポートされている API に移行して、ベータ版 API が削除されたマイナー バージョンにクラスタをアップグレードできるようにする必要があります。詳細については、GKE で Kubernetes の非推奨が機能する仕組みをご覧ください。

GKE では、非推奨の Kubernetes API の使用状況を検出することで、このプロセスを容易にできます。GKE は、非推奨の API の使用を検出すると、その API が削除されたマイナー バージョンへの自動アップグレードを一時停止します。GKE では、非推奨の分析情報と推奨事項も共有され、クラスタによる非推奨 API の使用を通知するため、アップグレード続行のための措置を講ずることができます。詳細については、今後の Kubernetes の非推奨からの影響に対する評価と緩和をご覧ください。

非推奨 API の完全なリストと、GKE が使用状況を検出するかどうかについては、Kubernetes API の非推奨に関する表をご覧ください。

次のステップ