Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird erläutert, wie Sie Probleme beheben können, wenn Sie Ressourcen mithilfe der ClusterResourcePlacementOverridden
Objekt-API im Microsoft Azure Kubernetes Fleet Manager verbreiten.
Symptome
Wenn Sie das ClusterResourcePlacement
API-Objekt in Azure Kubernetes Fleet Manager zum Verteilen von Ressourcen verwenden, schlägt die Bereitstellung fehl. Der Status von clusterResourcePlacementOverridden
wird als False
angezeigt.
Ursache
Dieses Problem kann auftreten, weil entweder das ClusterResourceOverride
oder das ResourceOverride
mit einem ungültigen Feldpfad für die Ressource erstellt wird.
Fallstudie
Im folgenden Beispiel wird versucht, die Clusterrolle secret-reader
zu überschreiben, die von ClusterResourcePlacement
an die ausgewählten Cluster 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 von der ClusterResourcePlacement
an die Mitgliedscluster weitergegeben wird.
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
ClusterResourceOverride
wird erstellt, um die ClusterRole
secret-reader
zu übersteuern, indem eine neue Bezeichnung (new-label
) hinzugefügt wird, die den Wert new-value
für die Cluster mit der Bezeichnung env: canary
aufweist.
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-reader
kö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.
Beschluss
Um die Clusterrolle secret-reader
erfolgreich 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 das neue Label newlabel
mit dem Wert new-value
zur ClusterRole secret-reader
hinzugefügt.
Kontaktieren Sie uns für Hilfe
Wenn Sie Fragen haben oder Hilfe benötigen, erstellen Sie eine Support-Anfrage oder wenden Sie sich an den Azure Community-Support. Sie können auch Produktfeedback an die Azure Feedback Community senden.