Niepowodzenie propagacji zasobów: KlasterResourcePlacementOverridden ma wartość False
W tym artykule omówiono sposób rozwiązywania problemów ClusterResourcePlacementOverridden
podczas propagacji zasobów przy użyciu interfejsu ClusterResourcePlacement
API obiektów w usłudze Microsoft Azure Kubernetes Fleet Manager.
Symptomy
W przypadku używania obiektu interfejsu ClusterResourcePlacement
API w usłudze Azure Kubernetes Fleet Manager do propagowania zasobów wdrożenie kończy się niepowodzeniem. Stan clusterResourcePlacementOverridden
jest wyświetlany jako False
.
Przyczyna
Ten problem może wystąpić, ponieważ obiekt ClusterResourceOverride
lub ResourceOverride
jest tworzony przy użyciu nieprawidłowej ścieżki pola dla zasobu.
Analiza przypadku
W poniższym przykładzie podjęto próbę zastąpienia roli klastra, która jest propagowana przez ClusterResourcePlacement
element secret-reader
do wybranych klastrów.
ClusterResourceOverride
Element jest jednak tworzony przy użyciu nieprawidłowej ścieżki dla zasobu.
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
Element ClusterRole
secret-reader
, który jest propagowany do klastrów składowych przez element ClusterResourcePlacement
.
Specyfikacje 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
Element ClusterResourceOverride
jest tworzony w celu zastąpienia ClusterRole
secret-reader
elementu przez dodanie nowej etykiety (new-label
), która ma wartość new-value
dla klastrów, które mają etykietę env: canary
.
Specyfikacje 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
Stan 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
ClusterResourcePlacementOverridden
Jeśli warunek to False
, sprawdź sekcjęplacementStatuses
, aby uzyskać dokładną przyczynę błędu.
W takiej sytuacji komunikat wskazuje, że przesłonięcie nie powiodło się, ponieważ brakuje ścieżki /metadata/labels/new-label
i odpowiadającej jej wartości.
Na podstawie poprzedniego przykładu roli secret-reader
klastra widać, że ścieżka /metadata/labels/
nie istnieje. Oznacza to, że labels
nie istnieje.
W związku z tym nie można dodać nowej etykiety.
Rozwiązanie
Aby pomyślnie zastąpić rolę secret-reader
klastra , popraw ścieżkę i wartość w ClusterResourceOverride
pliku , jak pokazano w poniższym kodzie:
jsonPatchOverrides:
- op: add
path: /metadata/labels
value:
newlabel: new-value
Spowoduje to dodanie nowej etykiety newlabel
z wartością new-value
ClusterRole secret-reader
.
Skontaktuj się z nami, aby uzyskać pomoc
Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.