Verworfene Kubernetes 1.16 APIs

Mit der Kubernetes-Version 1.16 werden seit Langem verworfene Versionen bestimmter APIs nicht mehr bereitgestellt. Die aktuellen API-Versionen sind seit Version 1.10 verfügbar und in allen unterstützten Versionen von Google Kubernetes Engine (GKE) verfügbar.

Änderungen in Version 1.16

Die meisten verworfenen APIs sind frühere Beta APIs, die seitdem von der Betaversion auf eine stabile Version umgestellt wurden. Die stabilen APIs bieten längerfristige Kompatibilitätsgarantien und sollten anstelle der verworfenen Beta APIs verwendet werden.

Geänderte Standardeinstellungen

In der folgenden Tabelle werden Änderungen für die Standardwerte von Parametern beschrieben, die Sie nicht definieren, wenn Sie von apps/v1beta1 wechseln.

Objekt Änderung Neues Verhalten
DaemonSet spec.updateStrategy.type: OnDelete wurde in RollingUpdate geändert. Bei RollingUpdate werden Pods bei Änderungen von DaemonSet-Definitionen automatisch neu erstellt.
Deployment spec.progressDeadlineSeconds: 2147483647 wurde auf 600 verringert. Verringert die Zeit, in der Deployments "in Bearbeitung" bleiben, bevor sie als fehlgeschlagen deklariert werden.
spec.revisionHistoryLimit: 2147483647 wurde auf 10 verringert. Beschränkt die Anzahl der ReplicaSet-Objekte, die verbleiben, bevor sie vom Deployment-Controller gelöscht werden.
spec.strategy.rollingUpdate.maxSurge: auf 25 % erhöht. Definiert die maximale Anzahl von Pods, die ein Rolling Update über die gewünschte Anzahl von Pods erstellen kann, die in spec.replicas angegeben ist.
spec.strategy.rollingUpdate.maxUnavailable: auf 25 % erhöht. Das Rolling Update wird nur fortgesetzt, wenn die Anzahl der nicht verfügbaren Pods unter diesem Wert liegt. Wenn es sich um einen Prozentsatz handelt, wird er in spec.replicas angegeben.
StatefulSet spec.updateStrategy.type: OnDelete wurde in RollingUpdate geändert. Bei RollingUpdate werden Pods bei Änderungen von StatefulSet-Definitionen automatisch neu erstellt.

Upgrade auf Version 1.16 vorbereiten

Sie müssen Ihre API-Objekte nicht löschen und neu erstellen. Alle vorhandenen beibehaltenen API-Objekte können bereits mit den neuen API-Versionen gelesen und aktualisiert werden.

Wir empfehlen Ihnen jedoch, Ihre Clients und Manifeste zu migrieren, bevor Sie ein Upgrade auf Kubernetes 1.16 durchführen. Für alle GKE-Versionen sind die neuen API-Versionen verfügbar.

Fehlerbehebung

API-Clients identifizieren, die in verworfene APIs schreiben

Cluster, für die die Operations-Suite von Google Cloud aktiviert ist, können die folgende Abfrage verwenden, um Clients zu identifizieren, die in verworfene APIs schreiben:

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")

Nach der Ausführung von kubectl get ... -o yaml werden verworfene Versionen angezeigt

Der Befehl kubectl get ... bevorzugt die Version "extensions/v1beta1", wenn sie auf dem verwendeten Cluster verfügbar ist. Der folgende Befehl ruft beispielsweise extensions/v1beta1-Deployments für einen 1.15-Cluster ab:

kubectl get deployments -o yaml

Nach dem Upgrade der Cluster auf Kubernetes 1.16 verwendet derselbe Befehl automatisch die neue API.

Sie können explizit eine API-Gruppe oder -Version angeben. Führen Sie beispielsweise folgenden Befehl aus, um apps/v1-Deployments abzurufen:

kubectl get deployments.v1.apps -o yaml

Ressourcen

Weitere Informationen finden Sie in der OSS-Dokumentation für Kubernetes: