Fout bij het doorgeven van resources: ClusterResourcePlacementOverridden is onwaar
In dit artikel wordt beschreven hoe u problemen oplost ClusterResourcePlacementOverridden
wanneer u resources doorgeeft met behulp van de ClusterResourcePlacement
object-API in Microsoft Azure Kubernetes Fleet Manager.
Symptomen
Wanneer u het ClusterResourcePlacement
API-object in Azure Kubernetes Fleet Manager gebruikt om resources door te geven, mislukt de implementatie. De clusterResourcePlacementOverridden
status wordt weergegeven als False
.
Oorzaak
Dit probleem kan optreden omdat de ClusterResourceOverride
of ResourceOverride
wordt gemaakt met behulp van een ongeldig veldpad voor de resource.
Casestudy
In het volgende voorbeeld wordt geprobeerd de clusterrol secret-reader
te overschrijven die door de ClusterResourcePlacement
geselecteerde clusters wordt doorgegeven.
De ClusterResourceOverride
wordt echter gemaakt met behulp van een ongeldig pad voor de resource.
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
De ClusterRole
secret-reader
die wordt doorgegeven aan de lidclusters door de ClusterResourcePlacement
.
Specificaties van ClusterResourceOverride
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
De ClusterResourceOverride
wordt gemaakt om het ClusterRole
secret-reader
te overschrijven door een nieuw label (new-label
) toe te voegen met de waarde new-value
voor de clusters met het label env: canary
.
Specificaties van ClusterResourcePlacement
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
Status van ClusterResourcePlacement:
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
Als de ClusterResourcePlacementOverridden
voorwaarde is False
, controleert u de placementStatuses
sectie om de exacte oorzaak van de fout op te halen.
In dit geval geeft het bericht aan dat de onderdrukking is mislukt omdat het pad /metadata/labels/new-label
en de bijbehorende waarde ontbreken.
Op basis van het vorige voorbeeld van de clusterrol secret-reader
kunt u zien dat het pad /metadata/labels/
niet bestaat. Dit betekent dat dat labels
niet bestaat.
Daarom kan er geen nieuw label worden toegevoegd.
Oplossing
Als u de clusterrol secret-reader
wilt overschrijven, corrigeert u het pad en de waarde in ClusterResourceOverride
, zoals wordt weergegeven in de volgende code:
jsonPatchOverrides:
- op: add
path: /metadata/labels
value:
newlabel: new-value
Hiermee wordt het nieuwe label newlabel
met de waarde new-value
toegevoegd aan clusterrole secret-reader
.
Contacteer ons voor hulp
Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.