Auf dieser Seite wird erläutert, wie Sie Cluster für Upgrades auf GKE-Version 1.22 vorbereiten. Sie können nach API-Clients suchen, die Aufrufe an verworfene APIs ausführen, die in 1.22 entfernt wurden, und diese Clients so aktualisieren, dass sie GA APIs verwenden. Weitere Informationen finden Sie in der Migrationsanleitung für verworfene Kubernetes APIs.
Entfernte APIs in 1.22
Die meisten verworfenen APIs in Kubernetes Version 1.22 sind frühere Beta APIs, die seitdem von der Betaversion (v1beta1
) auf GA (v1
, allgemeine Verfügbarkeit) umgestellt wurden. Die GA APIs bieten längerfristige Kompatibilitätsgarantien und sollten anstelle der verworfenen Beta APIs verwendet werden.
Sie können über die GA APIs mit allen vorhandenen Objekten interagieren.
Webhook-Ressourcen
Die Beta API-Version von MutatingWebhookConfiguration
und ValidatingWebhookConfiguration
wird seit Version 1.22 nicht mehr bereitgestellt.
- Migrieren Sie Manifeste und API-Clients, um die API-Version admissionregistration.k8s.io/v1 zu verwenden.
In der folgenden Tabelle werden die wichtigsten Änderungen der GA API-Version beschrieben:
Feld Ändern webhooks[*].failurePolicy
Die Standardeinstellung wurde von Ignore
inFail
geändert.webhooks[*].matchPolicy
Die Standardeinstellung wurde von Exact
inEquivalent
geändert.webhooks[*].timeoutSeconds
Die Standardeinstellung wurde von 30s
in10s
geändert.webhooks[*].sideEffects
Der Standardwert wird entfernt und das Feld ist jetzt erforderlich. Nur None
undNoneOnDryRun
sind zulässig.webhooks[*].admissionReviewVersions
Der Standardwert wurde entfernt und das Feld ist jetzt erforderlich (unterstützte Versionen für AdmissionReview
sindv1
undv1beta1
).webhooks[*].name
Darf in der Liste für Objekte, die über admissionregistration.k8s.io/v1
erstellt wurden, nur einmal vorkommen.
CustomResourceDefinition
Die Beta API-Version von CustomResourceDefinition
wird ab Version 1.22 nicht mehr bereitgestellt.
- Migrieren Sie Manifeste und API-Clients, um die API-Version apiextensions.k8s.io/v1 zu verwenden.
In der folgenden Tabelle werden die wichtigsten Änderungen der GA API-Version beschrieben:
Feld Ändern spec.scope
Die Standardeinstellung ist nicht mehr Namespaced
. Der Wert muss explizit angegeben werden.spec.version
Entfernt. Verwenden Sie stattdessen spec.versions
.spec.validation
Entfernt. Verwenden Sie stattdessen spec.versions[*].schema
.spec.subresources
Entfernt. Verwenden Sie stattdessen spec.versions[*].subresources
.spec.additionalPrinterColumns
Entfernt. Verwenden Sie stattdessen spec.versions[*].additionalPrinterColumns
.spec.conversion.webhookClientConfig
Verschoben nach spec.conversion.webhook.clientConfig
.spec.conversion.conversionReviewVersions
Verschoben nach spec.conversion.webhook.conversionReviewVersions
.spec.versions[*].schema.openAPIV3Schema
Wird jetzt beim Erstellen von v1- CustomResourceDefinition
-Objekten benötigt und muss ein strukturelles Schema sein.spec.preserveUnknownFields
Der Wert true
ist beim Erstellen von v1-CustomResourceDefinition
-Objekten nicht zulässig. Der Wert muss in Schemadefinitionen alsx-kubernetes-preserve-unknown-fields: true
angegeben werden.additionalPrinterColumns
In additionalPrinterColumns
-Elementen wurde das FeldJSONPath
injsonPath
umbenannt.
APIService
Die Beta API-Version von APIService
wird ab Version 1.22 nicht mehr bereitgestellt.
Migrieren Sie Manifeste und API-Clients, um die API-Version apiregistration.k8s.io/v1 zu verwenden.
TokenReview
Die Beta API-Version von TokenReview
wird ab Version 1.22 nicht mehr bereitgestellt.
Migrieren Sie Manifeste und API-Clients, um die API-Version authentication.k8s.io/v1 zu verwenden.
SubjectAccessReview-Ressourcen
Die Beta API-Version von LocalSubjectAccessReview
, SelfSubjectAccessReview
und SubjectAccessReview
wird ab Version 1.22 nicht mehr bereitgestellt.
- Migrieren Sie Manifeste und API-Clients, um die API-Version authorization.k8s.io/v1 zu verwenden.
In der folgenden Tabelle werden die wichtigsten Änderungen der GA API-Version beschrieben:
Feld Änderung spec.group
Wurde in spec.groups
umbenannt.
CertificateSigningRequest
Die Beta API-Version von CertificateSigningRequest
wird ab Version 1.22 nicht mehr bereitgestellt.
- Migrieren Sie Manifeste und API-Clients, um die API-Version certificates.k8s.io/v1 zu verwenden.
In der folgenden Tabelle werden die wichtigsten Änderungen der GA API-Version beschrieben:
Feld Ändern spec.signerName
Für API-Clients, die Zertifikate anfordern, ist dieses Feld erforderlich (siehe bekannte Kubernetes-Signer). Anfragen für kubernetes.io/legacy-unknown
dürfen nicht über diecertificates.k8s.io/v1
API erstellt werden.spec.usages
Für API-Clients, die Zertifikate anfordern, ist dieses Feld erforderlich. Dieses Feld darf keine doppelten Werte und nur bekannte Verwendungen enthalten. status.conditions
Für API-Clients, die Zertifikate genehmigen oder signieren, darf dieses Feld keine doppelten Typen enthalten. status.conditions[*].status
Dieses Feld ist für API-Clients, die Zertifikate genehmigen oder signieren, erforderlich. status.certificate
Für API-Clients, die Zertifikate genehmigen oder signieren, muss dieses Feld PEM-codiert sein und darf nur CERTIFICATE
-Blöcke enthalten.
Lease
Die Beta API-Version von Lease
wird ab Version 1.22 nicht mehr bereitgestellt. Migrieren Sie Manifeste und API-Clients, um die API-Version coordination.k8s.io/v1 zu verwenden.
Ingress (bis 1.23 für Cluster verfügbar, die auf 1.21 oder früher erstellt wurden)
Die Beta-API-Versionen (extensions/v1beta1
und networking.k8s.io/v1beta1
) von Ingress
werden nicht mehr für GKE-Cluster bereitgestellt, auf denen Version 1.22 oder höher ausgeführt wird, wenn der Cluster in Version 1.22 oder höher erstellt wurde.
Für Cluster, die in GKE Version 1.21 oder früher erstellt und auf die Patchversion 1.22.7-gke.300 oder höher aktualisiert wurden, können Sie die Beta API-Versionen weiterhin verwenden, bis der Cluster auf Version 1.23 aktualisiert wird. Dies ist eine einmalige Ausnahme für ältere Cluster, um Ihnen mehr Zeit zum Migrieren Ihrer Cluster von diesen API-Versionen zu geben, die mit der Version 1.22 aus dem Open-Source Kubernetes entfernt werden.
Cluster mit GKE-Version 1.23 und höher stellen die verworfenen Ingress
Beta-APIs nicht mehr bereit. Manifeste, die diese API-Versionen verwenden, können nicht mehr angewendet werden. Zuvor beibehaltene Objekte bleiben funktionsfähig und können mit den neuen API-Versionen vor und nach dem Upgrade auf Version 1.23 aufgerufen und aktualisiert werden.
- Migrieren Sie Manifeste und API-Clients, um die API-Version networking.k8s.io/v1 zu verwenden.
In der folgenden Tabelle werden die wichtigsten Änderungen der GA API-Version beschrieben:
Feld Änderung spec.backend
Wurde in spec.defaultBackend
umbenannt.Backend- serviceName
Wurde in service.name
umbenannt.servicePort
Die numerischen Backend- servicePort
-Felder werden inservice.port.number
umbenannt. Die String-Backend-servicePort
-Felder werden inservice.port.name
umbenannt.pathType
Jetzt für jeden angegebenen Pfad erforderlich. Der Wert kann Prefix
,Exact
oderImplementationSpecific
sein. Verwenden SieImplementationSpecific
, um das nicht definiertev1beta1
-Verhalten zu berücksichtigen.
Die folgenden Manifeste beschreiben dasselbe Ingress in v1
und v1beta1
:
v1beta1-Manifest
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: example
spec:
backend:
serviceName: default-backend
servicePort: 80
rules:
- http:
paths:
- path: /testpath
backend:
serviceName: test
servicePort: 80
v1-Manifest
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example
spec:
defaultBackend:
service:
name: default-backend
port:
number: 80
rules:
- http:
paths:
- path: /testpath
pathType: ImplementationSpecific
backend:
service:
name: test
port:
number: 80
Sie können die folgende Abfrage für Cluster mit aktivierter Google Cloud Observability verwenden, um Clients zu identifizieren, die auf die Ingress v1beta1
APIs zugreifen:
resource.type="k8s_cluster"
resource.labels.cluster_name="$CLUSTER_NAME"
protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@")
protoPayload.request.apiVersion=("extensions/v1beta1" OR "networking.k8s.io/v1beta1")
protoPayload.request.kind="Ingress"
NOT ("kube-system")
IngressClass
Die Beta API-Version von IngressClass
wird ab Version 1.22 nicht mehr bereitgestellt.
Migrieren Sie Manifeste und API-Clients, um die API-Version networking.k8s.io/v1 zu verwenden.
RBAC-Ressourcen
Die Beta API-Version von ClusterRole
, ClusterRoleBinding
, Role
und RoleBinding
wird ab Version 1.22 nicht mehr bereitgestellt. Migrieren Sie Manifeste und API-Clients, um die API-Version rbac.authorization.k8s.io/v1 zu verwenden.
PriorityClass
Die Beta API-Version von PriorityClass
wird ab Version 1.22 nicht mehr bereitgestellt.
Migrieren Sie Manifeste und API-Clients, um die API-Version scheduling.k8s.io/v1 zu verwenden.
Speicherressourcen
Die Beta API-Version von CSIDriver
, CSINode
, StorageClass
und VolumeAttachment
wird ab Version 1.22 nicht mehr bereitgestellt. Migrieren Sie Manifeste und API-Clients, um die API-Version storage.k8s.io/v1 zu verwenden.
Cluster mit verworfenen APIs finden
Hier finden Sie Informationen dazu, welche Cluster verworfene APIs verwenden. Die Einstellungsstatistiken enthalten auch Informationen darüber, welche API-Clients die verworfenen APIs in Ihrem Cluster aufrufen.
Anhand von Audit-Logs können Sie auch feststellen, welche Clients verworfene APIs aufrufen.
API-Clients mit Schreibaufrufen von verworfenen APIs suchen
Bei Clustern mit aktivierter Google Cloud Observability können Sie die folgende Abfrage des Admin-Aktivitätslogs verwenden. Damit können Sie anzeigen lassen, welche verworfenen APIs von User-Agents verwendet werden, die nicht von Google verwaltet werden:
resource.type="k8s_cluster"
labels."k8s.io/removed-release"="DEPRECATED_API_MINOR_VERSION"
protoPayload.authenticationInfo.principalEmail:("system:serviceaccount" OR "@")
protoPayload.authenticationInfo.principalEmail!~("system:serviceaccount:kube-system:")
Ersetzen Sie DEPRECATED_API_MINOR_VERSION
durch die Nebenversion, aus der die verworfene API entfernt wird, z. B. 1.22
.
Administratoraktivitäts-Audit-Logs werden automatisch für GKE-Cluster aktiviert. Mit dieser Abfrage zeigen die Logs User-Agents an, die Schreibaufrufe für die verworfenen APIs durchführen
API-Clients mit Leseaufrufen von verworfenen APIs suchen
Standardmäßig zeigen Audit-Logs nur Schreibaufrufe für die verworfenen APIs an. Wenn Sie auch Leseaufrufe von verworfenen APIs abrufen möchten, konfigurieren Sie die Audit-Logs für den Datenzugriff.
Folgen Sie der Anleitung Audit-Logs für Datenzugriff mit der Google Cloud Console konfigurieren. Wählen Sie in der Google Cloud Console die Kubernetes Engine API aus. Wählen Sie auf dem Tab Logtypen im Informationsfenster Admin Read
und Data Read
aus.
Nachdem diese Logs aktiviert wurden, können Sie jetzt über die ursprüngliche Abfrage Lese- und Schreibaufrufe von den verworfenen APIs ansehen.
Upgrade von Drittanbieterkomponenten durchführen
Statistiken zur Einstellung können Ergebnisse für Drittanbieter-Agents anzeigen, die Aufrufe an verworfene APIs in Ihrem Cluster senden.
Um diese Erkenntnisse zu beheben, führen Sie die folgenden Schritte aus:
- Wenden Sie sich an den Anbieter Ihrer Software, um eine aktualisierte Version zu erhalten.
- Upgraden Sie die Drittanbieter-Software auf die neueste Version. Wenn Sie kein Upgrade der Software durchführen können, sollten Sie testen, ob ein Upgrade von GKE auf die Version mit den entfernten verworfenen APIs Ihren Dienst unausführbar machen würde.
Wir empfehlen, dieses Upgrade und das Upgrade der GKE-Version auf einem Staging-Cluster durchzuführen, um auf Unterbrechungen zu achten, bevor Sie Ihre Produktionscluster aktualisieren.
Upgrade auf Version 1.22 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.22 durchführen. Weitere Informationen finden Sie im Abschnitt „Vorgehensweise“ der Migrationsanleitung für verworfene Kubernetes APIs.
Sie können Statistiken und Empfehlungen zur Einstellung aufrufen, um festzustellen, ob Ihr Cluster ein verworfenes Kubernetes-Feature oder eine verworfene API verwendet. Informationen zur Einstellung basieren auf beobachteten API-Aufrufen an verworfene APIs von User-Agents und nicht auf der Konfiguration Ihrer Kubernetes-Objekte.
Von Einstellungen betroffene Cluster aktualisieren
So aktualisieren Sie von Einstellungen betroffene Cluster:
- Prüfen Sie in den Statistiken zur Einstellung oder Logs, welche User-Agents die verworfenen APIs verwenden.
- Aktualisieren Sie die User-Agents, die verworfene APIs verwenden, auf unterstützte API-Versionen.
- Aktualisieren Sie jede Software von Drittanbietern, die veraltete APIs aufruft, auf die neuesten Versionen.
- Führen Sie ein Upgrade eines Testclusters durch und testen Sie Ihre Anwendung in einer Testumgebung, bevor Sie das Upgrade des Produktionsclusters ausführen. So können Sie das Risiko von Unterbrechungen zu verringern, falls verworfene APIs nicht mehr verfügbar sind.
- Nachdem Sie alle User-Agents aktualisiert haben, wartet GKE, bis es 30 Tage lang keine Verwendung veralteter APIs mehr beobachtet hat, und hebt dann die Blockierung der automatischen Upgrades auf. Automatische Upgrades werden gemäß dem Veröffentlichungszeitplan fortgesetzt.
- Wenn Sie einen betroffenen User-Agent nicht aktualisieren können, führen Sie ein Upgrade eines separaten Testclusters durch, um zu prüfen, ob das Upgrade Störungen verursacht. Wenn das Upgrade keine Störungen verursacht, können Sie den Cluster manuell upgraden.
Ressourcen
Weitere Informationen finden Sie in der OSS-Dokumentation für Kubernetes:
- Kubernetes-Blog: API-Entfernungen für Kubernetes Version 1.22
- Versionshinweise zu Kubernetes 1.22
- Migrationsanleitung für verworfene Kubernetes APIs