Compartilhar via


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.

Causa

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.