Falha na propagação de recursos: ClusterResourcePlacementWorkSynchronized é false
Este artigo descreve como solucionar ClusterResourcePlacementWorkSynchronized
problemas ao propagar recursos usando o objeto de API no Gerenciador de Frotas do ClusterResourcePlacement
Kubernetes do Azure.
Sintomas
Ao usar o objeto de ClusterResourcePlacement
API no Azure Kubernetes Fleet Manager para propagar recursos, se o ClusterResourcePlacement
for atualizado, os objetos de trabalho associados não serão sincronizados com as alterações e o status da ClusterResourcePlacementWorkSynchronized
condição será mostrado como False
.
Observação
Para obter mais informações sobre por que a sincronização do objeto de trabalho falha, você pode verificar os logs do controlador do gerador de trabalho.
Motivo
Esse problema pode ocorrer por um dos seguintes motivos:
- O controlador encontra um erro ao tentar gerar o objeto de trabalho correspondente.
- O objeto envelopado não está bem formatado.
Estudo de caso
No exemplo a seguir, o ClusterResourcePlacement
está tentando propagar um recurso para um cluster selecionado, mas o objeto de trabalho não é atualizado para refletir as alterações mais recentes porque o cluster selecionado foi encerrado.
Especificação de ClusterResourcePlacement
spec:
resourceSelectors:
- group: rbac.authorization.k8s.io
kind: ClusterRole
name: secret-reader
version: v1
policy:
placementType: PickN
numberOfClusters: 1
strategy:
type: RollingUpdate
Status de ClusterResourcePlacement
spec:
policy:
numberOfClusters: 1
placementType: PickN
resourceSelectors:
- group: ""
kind: Namespace
name: test-ns
version: v1
revisionHistoryLimit: 10
strategy:
type: RollingUpdate
status:
conditions:
- lastTransitionTime: "2024-05-14T18:05:04Z"
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-14T18:05:05Z"
message: All 1 cluster(s) start rolling out the latest resource
observedGeneration: 1
reason: RolloutStarted
status: "True"
type: ClusterResourcePlacementRolloutStarted
- lastTransitionTime: "2024-05-14T18:05:05Z"
message: No override rules are configured for the selected resources
observedGeneration: 1
reason: NoOverrideSpecified
status: "True"
type: ClusterResourcePlacementOverridden
- lastTransitionTime: "2024-05-14T18:05:05Z"
message: There are 1 cluster(s) which have not finished creating or updating work(s)
yet
observedGeneration: 1
reason: WorkNotSynchronizedYet
status: "False"
type: ClusterResourcePlacementWorkSynchronized
observedResourceIndex: "0"
placementStatuses:
- clusterName: kind-cluster-1
conditions:
- lastTransitionTime: "2024-05-14T18:05:04Z"
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-14T18:05:05Z"
message: Detected the new changes on the resources and started the rollout process
observedGeneration: 1
reason: RolloutStarted
status: "True"
type: RolloutStarted
- lastTransitionTime: "2024-05-14T18:05:05Z"
message: No override rules are configured for the selected resources
observedGeneration: 1
reason: NoOverrideSpecified
status: "True"
type: Overridden
- lastTransitionTime: "2024-05-14T18:05:05Z"
message: 'Failed to synchronize the work to the latest: works.placement.kubernetes-fleet.io
"crp1-work" is forbidden: unable to create new content in namespace fleet-member-kind-cluster-1
because it is being terminated'
observedGeneration: 1
reason: SyncWorkFailed
status: "False"
type: WorkSynchronized
selectedResources:
- kind: Namespace
name: test-ns
version: v1
ClusterResourcePlacement
No status, o status da ClusterResourcePlacementWorkSynchronized
condição é exibido como False
. A mensagem indica que o objeto crp1-work
de trabalho está proibido de gerar novo conteúdo dentro do namespace fleet-member-kind-cluster-1
porque ele está terminando no momento.
Resolução
Nessa situação, aqui estão várias soluções possíveis:
- Modifique o
ClusterResourcePlacement
com um cluster recém-selecionado. - Exclua o
ClusterResourcePlacement
para remover o trabalho por meio da coleta de lixo. - Volte a associar-se ao grupo de membros. O namespace só pode ser regenerado após o reingresso no cluster.
Em outras situações, você pode optar por aguardar a conclusão da propagação do trabalho.
Entre em contato conosco para obter ajuda
Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.