리소스 전파 실패: ClusterResourcePlacementOverridden is False
이 문서에서는 Microsoft Azure Kubernetes Fleet Manager에서 개체 API를 사용하여 리소스를 ClusterResourcePlacement
전파할 때 발생하는 문제를 해결하는 ClusterResourcePlacementOverridden
방법을 설명합니다.
증상
Azure Kubernetes Fleet Manager에서 ClusterResourcePlacement
API 개체를 사용하여 리소스를 전파하면 배포가 실패합니다. 상태는 clusterResourcePlacementOverridden
다음과 같이 False
표시됩니다.
원인
이 문제는 리소스에 ClusterResourceOverride
대해 잘못된 필드 경로를 사용하여 생성되었거나 ResourceOverride
생성되었기 때문에 발생할 수 있습니다.
사례 연구
다음 예제에서는 선택한 클러스터에 전파되는 클러스터 역할을 secret-reader
재정의 ClusterResourcePlacement
하려고 시도합니다.
그러나 리소스에 ClusterResourceOverride
대해 잘못된 경로를 사용하여 만들어집니다.
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
에 ClusterRole
secret-reader
의해 ClusterResourcePlacement
멤버 클러스터로 전파되는 값입니다.
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
레이블 ClusterResourceOverride
이 있는 클러스터에 ClusterRole
secret-reader
대한 값 new-value
이 있는 새 레이블(new-label
)을 추가하여 재정의하기 위해 만들어집니다env: canary
.
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
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
False
경우 섹션을 placementStatuses
확인하여 오류의 정확한 원인을 확인합니다.
이 경우 메시지는 경로 /metadata/labels/new-label
와 해당 값이 누락되어 재정의가 실패했음을 나타냅니다.
클러스터 역할 secret-reader
의 이전 예제에 따라 경로 /metadata/labels/
가 존재하지 않는 것을 확인할 수 있습니다. 즉, labels
존재하지 않습니다.
따라서 새 레이블을 추가할 수 없습니다.
해결
클러스터 역할을 secret-reader
성공적으로 재정의하려면 다음 코드와 같이 경로 및 값을 ClusterResourceOverride
수정합니다.
jsonPatchOverrides:
- op: add
path: /metadata/labels
value:
newlabel: new-value
그러면 값 new-value
이 있는 새 레이블 newlabel
이 ClusterRolesecret-reader
에 추가됩니다.
도움을 요청하십시오.
질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.