Fehlerbehebung bei Upgrades


Auf dieser Seite wird beschrieben, wie Sie Probleme bei Clusterupgrades von Google Kubernetes Engine (GKE) beheben.

Wenn Sie weitere Unterstützung benötigen, wenden Sie sich an den Cloud Customer Care.

kube-apiserver ist nach dem Upgrade der Steuerungsebene fehlerhaft

Das folgende Problem tritt auf, wenn Sie ein manuelles Upgrade der Steuerungsebene Ihrer GKE-Clusterversion starten. Einige vom Nutzer bereitgestellte Zulassungs-Webhooks können verhindern, dass Systemkomponenten zulässige RBAC-Rollen erstellen, die für eine ordnungsgemäße Funktion erforderlich sind. Während des Upgrades der Steuerungsebene erstellt Google Cloud die Komponente des Kubernetes API-Servers (kube-apiserver) neu. Wenn ein Webhook die RBAC-Rolle für die API-Serverkomponente blockiert, wird der API-Server nicht gestartet und das Clusterupgrade wird nicht abgeschlossen.

Die Fehlermeldung in der gcloud CLI sieht in etwa so aus:

FAILED: All cluster resources were brought up, but: component "KubeApiserverReady" from endpoint "readyz of kube apiserver is not successful" is unhealthy.

Um den fehlerhaften Webhook zu identifizieren, prüfen Sie Ihre GKE-Audit-Logs auf RBAC-Aufrufe mit den folgenden Informationen:

protoPayload.resourceName="RBAC_RULE"
protoPayload.authenticationInfo.principalEmail="system:apiserver"

RBAC_RULE ist der vollständige Name einer RBAC-Rolle, z. B. rbac.authorization.k8s.io/v1/clusterroles/system:controller:horizontal-pod-autoscaler.

Der Name des fehlgeschlagenen Webhooks wird im Log im folgenden Format angezeigt:

admission webhook WEBHOOK_NAME denied the request

Versuchen Sie Folgendes, um dieses Problem zu beheben:

  • Passen Sie Ihre Einschränkungen an, um das Erstellen und Aktualisieren von ClusterRoles mit dem Präfix system: zuzulassen.
  • Passen Sie Ihren Webhook so an, dass keine Anfragen zum Erstellen und Aktualisieren von System-RBAC-Rollen abgefangen werden.
  • Deaktivieren Sie den Webhook.

Wie ist das möglich?

Kubernetes macht einen automatischen Abgleich der RBAC-Rollen des Standardsystems mit den Standardrichtlinien in der neuesten Nebenversion. Die Standardrichtlinien für Systemrollen ändern sich in neuen Kubernetes-Versionen manchmal.

Für diesen Abgleich erstellt oder aktualisiert GKE die ClusterRoles und ClusterRoleBindings im Cluster. Wenn Sie einen Webhook haben, der die Erstellungs- oder Aktualisierungsanfragen aufgrund des Umfangs der Berechtigungen, die die Standard-RBAC-Richtlinien verwenden, abfängt und ablehnt, kann der API-Server nicht mit der neuen Nebenversion funktionieren.

Nach dem Upgrade des Standard-Clusters entfernte Arbeitslasten

Ihre Arbeitslasten werden möglicherweise nach einem Clusterupgrade bereinigt, wenn alle folgenden Bedingungen erfüllt sind:

  • Die Systemarbeitslasten benötigen mehr Speicherplatz, wenn die Steuerungsebene des Clusters die neue GKE-Version ausführt.
  • Ihre vorhandenen Knoten haben nicht genügend Ressourcen, um die neuen Systemarbeitslasten und vorhandenen Arbeitslasten auszuführen.
  • Cluster Autoscaler ist für den Cluster deaktiviert.

Versuchen Sie Folgendes, um dieses Problem zu beheben:

Nächste Schritte

Wenn Sie weitere Unterstützung benötigen, wenden Sie sich an den Cloud Customer Care.