Kubernetes 1.16 の非推奨 API

Kubernetes 1.16 リリースでは、特定の API の非推奨となったバージョンは提供されなくなりました。現在の API バージョンは v1.10 以降の、Google Kubernetes Engine(GKE)の全サポート バージョンで利用できます。

1.16 における変更点

非推奨 API のほとんどは、以前のベータ版 API であり、その後、ベータ版から安定版に移行されました。Stable API では長期的な互換性が保証されるため、非推奨のベータ版 API の代わりにこれを使用する必要があります。

変更されたデフォルト値

次の表では、apps/v1beta1 から移行する場合に定義しないパラメータのデフォルト値の変更について説明します。

オブジェクト 変更点 新しい動作
DaemonSet spec.updateStrategy.type: OnDelete から RollingUpdate に変更しました。 RollingUpdate では、DaemonSet 定義を変更すると Pod が自動的に再作成されます。
Deployment spec.progressDeadlineSeconds: 2147483647 から 600 に変更しました。 Deployment が失敗と判断されるまで、「進行中」にとどまる時間を短縮ます。
spec.revisionHistoryLimit: 2147483647 から 10 に変更しました。 Deployment コントローラによって削除される前に残っている ReplicaSet オブジェクトの数を制限します。
spec.strategy.rollingUpdate.maxSurge: 25% に増加しました。 ローリング アップデートが、specs.replicas で指定された目的の数の Pod に対して作成できる Pod の最大数を定義します。
spec.strategy.rollingUpdate.maxUnavailable: 25% に増加しました。 ローリング アップデートは、使用できない Pod の数がこの数を下回った場合にのみ続行されます。割合の場合は、spec.replicas で指定されます。
StatefulSet spec.updateStrategy.type: OnDelete から RollingUpdate に変更しました。 RollingUpdate では、StatefulSet 定義を変更すると Pod が自動的に再作成されます。

1.16 へのアップグレードの準備

API オブジェクトを削除して再作成する必要はありません。既存のすべての API オブジェクトは、すでに新しい API バージョンを使用して読み込み、更新できます。

ただし、Kubernetes 1.16 にアップグレードする前に、クライアントとマニフェストを移行することをおすすめします。すべての GKE バージョンで新しい API バージョンが利用可能です。

トラブルシューティング

非推奨 API へ書き込みを行う API クライアントを特定する

Google Cloud のオペレーション スイートが有効になっているクラスタでは、次のクエリを使用して、非推奨 API に書き込むクライアントを特定できます。

resource.type="k8s_cluster"
resource.labels.cluster_name="$CLUSTER_NAME"
protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@")
protoPayload.request.apiVersion=("extensions/v1beta1" OR "apps/v1beta1" OR "apps/v1beta2")
protoPayload.request.kind!="Ingress"
NOT ("kube-system")

kubectl get ... -o yaml の実行後に非推奨のバージョンが表示される

kubectl get ... は、使用中のクラスタで extensions/v1beta1 が使用可能な場合に使用します。たとえば、次のコマンドは 1.15 クラスタ上の extensions/v1beta1 デプロイを取得します。

kubectl get deployments -o yaml

クラスタを Kubernetes 1.16 にアップグレードすると、同じコマンドで新しい API が自動的に使用されます。

API グループやバージョンは、明示的に指定できます。たとえば、apps/v1 デプロイを取得するには、次のコマンドを実行します。

kubectl get deployments.v1.apps -o yaml

リソース

詳細については、以下の OSS Kubernetes ドキュメントをご覧ください。