Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo descreve como solucionar ClusterResourcePlacementWorkSynchronized
problemas ao propagar recursos usando o ClusterResourcePlacement
objeto de API no Gerenciador de Frotas de Kubernetes do Azure.
Sintomas
Usando o objeto de API ClusterResourcePlacement
no Gerenciador de Frota do Kubernetes do Azure para propagar recursos, se o ClusterResourcePlacement
for atualizado, os objetos de trabalho associados não são sincronizados com as alterações e o status da condição ClusterResourcePlacementWorkSynchronized
aparece 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 envelopedo não está bem formatado.
Estudo de caso
No exemplo a seguir, ele 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 Colocação de Recursos de Cluster
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
No status ClusterResourcePlacement
, a condição ClusterResourcePlacementWorkSynchronized
é mostrada como False
. A mensagem indica que o objeto crp1-work
de trabalho está proibido de gerar um novo conteúdo dentro do namespace fleet-member-kind-cluster-1
porque está sendo encerrado no momento.
Resolução
Nesta situação, aqui estão várias soluções em potencial:
- Altere o
ClusterResourcePlacement
para um cluster recém-selecionado. - Exclua o
ClusterResourcePlacement
para remover o trabalho por meio da coleta de lixo. - Reentre no grupo de membros. O namespace pode ser regenerado apenas depois de reentrar no cluster.
Em outras situações, você pode escolher esperar até que o trabalho se propague completamente.
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.