Fehlerbehebung bei der Bereitstellung privilegierter Autopilot-Arbeitslasten


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:

  1. 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.

  2. Ö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.

  3. 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 Befehls kubectl get workloadallowlist, nicht den Pfad zur Zulassungslistendatei.

  4. 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 und ENV_VAR2 angegeben, in der Zulassungsliste jedoch nicht.
    • Der Container gibt das Image k8s.gcr.io/diff/image an, die Zulassungsliste jedoch k8s.gcr.io/pause2.
    • Der Container fügt die Funktionen SYS_ADMIN und SYS_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 Namen data an.

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