Dela via


Resursspridningsfel: ClusterResourcePlacementOverridden är falskt

I den här artikeln beskrivs hur du felsöker ClusterResourcePlacementOverridden problem när du sprider resurser med hjälp av objekt-API:et ClusterResourcePlacement i Microsoft Azure Kubernetes Fleet Manager.

Symptom

När du använder ClusterResourcePlacement API-objektet i Azure Kubernetes Fleet Manager för att sprida resurser misslyckas distributionen. Statusen clusterResourcePlacementOverridden visas som False.

Orsak

Det här problemet kan inträffa eftersom ClusterResourceOverride eller ResourceOverride skapas med hjälp av en ogiltig fältsökväg för resursen.

Fallstudie

I följande exempel görs ett försök att åsidosätta den klusterroll secret-reader som sprids av ClusterResourcePlacement till de valda klustren. Men ClusterResourceOverride skapas med hjälp av en ogiltig sökväg för resursen.

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

Det ClusterRole secret-reader som sprids till medlemskluster av ClusterResourcePlacement.

ClusterResourceOverride-specifikationer

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

ClusterResourceOverride Skapas för att åsidosätta ClusterRole secret-reader genom att lägga till en ny etikett (new-label) som har värdet new-value för de kluster som har etiketten env: canary.

ClusterResourcePlacement-specifikationer

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

Om villkoret ClusterResourcePlacementOverridden är Falsekontrollerar du avsnittet placementStatuses för att få den exakta orsaken till felet.

I den här situationen anger meddelandet att åsidosättningen misslyckades eftersom sökvägen /metadata/labels/new-label och dess motsvarande värde saknas. Baserat på föregående exempel på klusterrollen secret-readerkan du se att sökvägen /metadata/labels/ inte finns. Det betyder att det labels inte finns. Det går därför inte att lägga till en ny etikett.

Åtgärd

Om du vill åsidosätta klusterrollen secret-readerkorrigerar du sökvägen och värdet i ClusterResourceOverride, enligt följande kod:

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

Detta lägger till den nya etiketten newlabel som har värdet new-value i ClusterRole secret-reader.

Kontakta oss för att få hjälp

Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.