Freigeben über


Fehler bei der Ressourcenverteilung: "ClusterResourcePlacementOverridden" ist "False".

In diesem Artikel wird erläutert, wie Sie Probleme beheben ClusterResourcePlacementOverridden können, wenn Sie Ressourcen mithilfe der ClusterResourcePlacement Objekt-API in Microsoft Azure Kubernetes Fleet Manager verteilen.

Symptome

Wenn Sie das ClusterResourcePlacement API-Objekt in Azure Kubernetes Fleet Manager zum Verteilen von Ressourcen verwenden, schlägt die Bereitstellung fehl. Der clusterResourcePlacementOverridden Status wird als False.

Ursache

Dieses Problem kann auftreten, da das ClusterResourceOverride Feld mit einem ungültigen Feldpfad für die Ressource erstellt oder ResourceOverride erstellt wird.

Fallstudie

Im folgenden Beispiel wird versucht, die Clusterrolle secret-reader zu überschreiben, die von den ClusterResourcePlacement ausgewählten Clustern weitergegeben wird. Dies ClusterResourceOverride wird jedoch mithilfe eines ungültigen Pfads für die Ressource erstellt.

ClusterRole

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"rbac.authorization.k8s.io/v1","kind":"ClusterRole","metadata":{"annotations":{},"name":"secret-reader"},"rules":[{"apiGroups":[""],"resources":["secrets"],"verbs":["get","watch","list"]}]}
creationTimestamp: "2024-05-14T15:36:48Z"
name: secret-reader
resourceVersion: "81334"
uid: 108e6312-3416-49be-aa3d-a665c5df58b4
rules:
- apiGroups:
  - ""
    resources:
  - secrets
    verbs:
  - get
  - watch
  - list

Das ClusterRole secret-reader , das an die Membercluster durch die ClusterResourcePlacement.

ClusterResourceOverride-Spezifikationen

spec:
  clusterResourceSelectors:
  - group: rbac.authorization.k8s.io
    kind: ClusterRole
    name: secret-reader
    version: v1
  policy:
    overrideRules:
    - clusterSelector:
        clusterSelectorTerms:
        - labelSelector:
            matchLabels:
              env: canary
      jsonPatchOverrides:
      - op: add
        path: /metadata/labels/new-label
        value: new-value

Es ClusterResourceOverride wird erstellt, um die ClusterRole secret-reader Bezeichnung durch Hinzufügen einer neuen Bezeichnung (new-label) außer Kraft zu setzen, die den Wert new-value für die Cluster mit der Bezeichnung env: canaryaufweist.

ClusterResourcePlacement-Spezifikationen

spec:
  resourceSelectors:
    - group: rbac.authorization.k8s.io
      kind: ClusterRole
      name: secret-reader
      version: v1
  policy:
    placementType: PickN
    numberOfClusters: 1
    affinity:
      clusterAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          clusterSelectorTerms:
            - labelSelector:
                matchLabels:
                  env: canary
  strategy:
    type: RollingUpdate
    applyStrategy:
      allowCoOwnership: true

ClusterResourcePlacement-Status:

status:
  conditions:
  - lastTransitionTime: "2024-05-14T16:16:18Z"
    message: found all cluster needed as specified by the scheduling policy, found
      1 cluster(s)
    observedGeneration: 1
    reason: SchedulingPolicyFulfilled
    status: "True"
    type: ClusterResourcePlacementScheduled
  - lastTransitionTime: "2024-05-14T16:16:18Z"
    message: All 1 cluster(s) start rolling out the latest resource
    observedGeneration: 1
    reason: RolloutStarted
    status: "True"
    type: ClusterResourcePlacementRolloutStarted
  - lastTransitionTime: "2024-05-14T16:16:18Z"
    message: Failed to override resources in 1 cluster(s)
    observedGeneration: 1
    reason: OverriddenFailed
    status: "False"
    type: ClusterResourcePlacementOverridden
  observedResourceIndex: "0"
  placementStatuses:
  - applicableClusterResourceOverrides:
    - cro-1-0
    clusterName: kind-cluster-1
    conditions:
    - lastTransitionTime: "2024-05-14T16:16:18Z"
      message: 'Successfully scheduled resources for placement in kind-cluster-1 (affinity
        score: 0, topology spread score: 0): picked by scheduling policy'
      observedGeneration: 1
      reason: Scheduled
      status: "True"
      type: Scheduled
    - lastTransitionTime: "2024-05-14T16:16:18Z"
      message: Detected the new changes on the resources and started the rollout process
      observedGeneration: 1
      reason: RolloutStarted
      status: "True"
      type: RolloutStarted
    - lastTransitionTime: "2024-05-14T16:16:18Z"
      message: 'Failed to apply the override rules on the resources: add operation
        does not apply: doc is missing path: "/metadata/labels/new-label": missing
        value'
      observedGeneration: 1
      reason: OverriddenFailed
      status: "False"
      type: Overridden
  selectedResources:
  - group: rbac.authorization.k8s.io
    kind: ClusterRole
    name: secret-reader
    version: v1

Wenn die ClusterResourcePlacementOverridden Bedingung lautet False, überprüfen Sie den placementStatuses Abschnitt, um die genaue Ursache des Fehlers zu erhalten.

In diesem Fall gibt die Meldung an, dass die Außerkraftsetzung fehlgeschlagen ist, da der Pfad /metadata/labels/new-label und der entsprechende Wert fehlen. Basierend auf dem vorherigen Beispiel der Clusterrolle secret-readerkönnen Sie sehen, dass der Pfad /metadata/labels/ nicht vorhanden ist. Dies bedeutet, dass labels es nicht vorhanden ist. Daher kann keine neue Bezeichnung hinzugefügt werden.

Lösung

Um die Clusterrolle secret-readererfolgreich außer Kraft zu setzen, korrigieren Sie den Pfad und Wert in ClusterResourceOverride, wie im folgenden Code dargestellt:

jsonPatchOverrides:
  - op: add
    path: /metadata/labels
    value: 
      newlabel: new-value

Dadurch wird die neue Bezeichnung newlabel mit dem Wert new-value clusterRole secret-readerhinzugefügt.

Kontaktieren Sie uns für Hilfe

Wenn Sie Fragen haben oder Hilfe mit Ihren Azure-Gutschriften benötigen, dann erstellen Sie beim Azure-Support eine Support-Anforderung oder fragen Sie den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.