Auf dieser Seite wird beschrieben, wie Sie Probleme mit privilegierten Arbeitslasten beheben, die Sie in GKE-Autopilot-Clustern (Google Kubernetes Engine) bereitstellen.
Probleme bei der Synchronisierung von Zulassungslisten
Wenn Sie ein AllowlistSynchronizer
bereitstellen, versucht GKE, die von Ihnen angegebenen Zulassungslistendateien zu installieren und zu synchronisieren. Wenn diese Synchronisierung fehlschlägt, wird der Fehler im Feld status
der AllowlistSynchronizer
gemeldet.
Rufen Sie den Status des AllowlistSynchronizer
-Objekts ab:
kubectl get allowlistsynchronizer ALLOWLIST_SYNCHRONIZER_NAME -o yaml
Die Ausgabe sieht etwa so aus:
...
status:
conditions:
- type: Ready
status: "False"
reason: "SyncError"
message: "some allowlists failed to sync: example-allowlist-1.yaml"
lastTransitionTime: "2024-10-12T10:00:00Z"
observedGeneration: 2
managedAllowlistStatus:
- filePath: "gs://path/to/allowlist1.yaml"
generation: 1
phase: Installed
lastSuccessfulSync: "2024-10-10T10:00:00Z"
- filePath: "gs://path/to/allowlist2.yaml"
phase: Failed
lastError: "Initial install failed: invalid contents"
lastSuccessfulSync: "2024-10-08T10:00:00Z"
Die Felder conditions.message
und managedAllowlistStatus.lastError
enthalten detaillierte Informationen zum Fehler. Anhand dieser Informationen können Sie das Problem beheben.
Probleme bei der Bereitstellung privilegierter Arbeitslasten
Nachdem Sie eine Zulassungsliste erfolgreich installiert haben, stellen Sie die entsprechende privilegierte Arbeitslast in Ihrem Cluster bereit. In einigen Fällen lehnt GKE die Arbeitslast möglicherweise ab.
Versuchen Sie Folgendes:
- Achten Sie darauf, dass die GKE-Version Ihres Clusters die Versionsanforderung der Arbeitslast erfüllt.
- Prüfen Sie, ob die Arbeitslast, die Sie bereitstellen, die Arbeitslast ist, für die die Zulassungslistendatei gilt.
Wenn Sie wissen möchten, warum eine privilegierte Arbeitslast abgelehnt wurde, fordern Sie detaillierte Informationen von GKE zu Verstößen gegen die Zulassungsliste an:
Rufen Sie eine Liste der installierten Zulassungslisten im Cluster ab:
kubectl get workloadallowlist
Suchen Sie den Namen der Zulassungsliste, die für die privilegierte Arbeitslast gelten soll.
Öffnen Sie das YAML-Manifest der privilegierten Arbeitslast in einem Texteditor. Wenn Sie nicht auf die YAML-Manifeste zugreifen können, z. B. wenn beim Bereitstellungsprozess der Arbeitslast andere Tools verwendet werden, wenden Sie sich an den Arbeitslastanbieter, um ein Problem zu melden. Überspringen Sie die restlichen Schritte.
Fügen Sie der Pod-Spezifikation der privilegierten Arbeitslast im Abschnitt
spec.metadata.labels
das folgende Label hinzu:labels: cloud.google.com/matching-allowlist: ALLOWLIST_NAME
Ersetzen Sie
ALLOWLIST_NAME
durch den Namen der Zulassungsliste, die Sie im vorherigen Schritt erhalten haben. Verwenden Sie den Namen aus der Ausgabe des Befehlskubectl get workloadallowlist
, nicht den Pfad zur Zulassungslistendatei.Speichern Sie das Manifest und wenden Sie die Arbeitslast auf den Cluster an:
kubectl apply -f WORKLOAD_MANIFEST_FILE
Ersetzen Sie
WORKLOAD_MANIFEST_FILE
durch den Pfad zur Manifestdatei.Die Ausgabe enthält detaillierte Informationen dazu, welche Felder im Arbeitslastprofil nicht mit der angegebenen Zulassungsliste übereinstimmen, wie im folgenden Beispiel:
Error from server (GKE Warden constraints violations): error when creating "STDIN": admission webhook "warden-validating.common-webhooks.networking.gke.io" denied the request: =========================================================================== Workload Mismatches Found for Allowlist (example-allowlist-1): =========================================================================== HostNetwork Mismatch: Workload=true, Allowlist=false HostPID Mismatch: Workload=true, Allowlist=false Volume[0]: data - data not found in allowlist. Verify volume with matching name exists in allowlist. Container[0]: - Envs Mismatch: - env[0]: 'ENV_VAR1' has no matching string or regex pattern in allowlist. - env[1]: 'ENV_VAR2' has no matching string or regex pattern in allowlist. - Image Mismatch: Workload=k8s.gcr.io/diff/image, Allowlist=k8s.gcr.io/pause2. Verify that image string or regex match. - SecurityContext: - Capabilities.Add Mismatch: the following added capabilities are not permitted by the allowlist: [SYS_ADMIN SYS_PTRACE] - VolumeMount[0]: data - data not found in allowlist. Verify volumeMount with matching name exists in allowlist.
In diesem Beispiel treten die folgenden Verstöße auf:
- In der Arbeitslast wird
hostNetwork: true
angegeben, in der Zulassungsliste jedoch nicht.hostNetwork: true
- In der Arbeitslast wird
hostPID: true
angegeben, in der Zulassungsliste jedoch nicht.hostPID: true
- In der Arbeitslast wird ein Volume mit dem Namen
data
angegeben, in der Zulassungsliste jedoch nicht.data
- Im Container werden Umgebungsvariablen mit den Namen
ENV_VAR1
undENV_VAR2
angegeben, in der Zulassungsliste jedoch nicht. - Der Container gibt das Image
k8s.gcr.io/diff/image
an, die Zulassungsliste jedochk8s.gcr.io/pause2
. - Der Container fügt die Funktionen
SYS_ADMIN
undSYS_PTRACE
hinzu, aber die Zulassungsliste erlaubt das Hinzufügen dieser Funktionen nicht. - Der Container gibt eine Volume-Bereitstellung mit dem Namen
data
an, aber die Zulassungsliste gibt keine Volume-Bereitstellung mit dem Namendata
an.
- In der Arbeitslast wird
Wenn Sie eine Arbeitslast bereitstellen, die von einem Drittanbieter bereitgestellt wird, wenden Sie sich an diesen Anbieter, um die Verstöße zu beheben. Geben Sie die Ausgabe aus dem vorherigen Schritt im Problem an.
Programmfehler und Funktionsanfragen für privilegierte Arbeitslasten und Zulassungslisten
Partner sind für die Erstellung, Entwicklung und Wartung ihrer privilegierten Arbeitslasten und Zulassungslisten verantwortlich. Wenn Sie einen Fehler finden oder einen Funktionswunsch für eine privilegierte Arbeitslast oder Zulassungsliste haben, wenden Sie sich an den entsprechenden Partner.
Nächste Schritte
Wenn Sie in der Dokumentation keine Lösung für Ihr Problem finden, lesen Sie den Abschnitt Support erhalten. Dort finden Sie weitere Hilfe, z. B. zu den folgenden Themen:
- Sie können eine Supportanfrage erstellen, indem Sie sich an Cloud Customer Care wenden.
- Support von der Community erhalten, indem Sie Fragen auf Stack Overflow stellen und mit dem Tag
google-kubernetes-engine
nach ähnlichen Problemen suchen. Sie können auch dem#kubernetes-engine
-Slack-Kanal beitreten, um weiteren Community-Support zu erhalten. - Sie können Fehler melden oder Funktionsanfragen stellen, indem Sie die öffentliche Problemverfolgung verwenden.