Udostępnij za pośrednictwem


Niepowodzenie propagacji zasobów: KlasterResourcePlacementWorkSynchronized ma wartość false

W tym artykule opisano sposób rozwiązywania problemów ClusterResourcePlacementWorkSynchronized podczas propagacji zasobów przy użyciu obiektu interfejsu ClusterResourcePlacement API w usłudze Azure Kubernetes Fleet Manager.

Symptomy

W przypadku używania obiektu interfejsu ClusterResourcePlacement API w usłudze Azure Kubernetes Fleet Manager do propagowania zasobów, jeśli ClusterResourcePlacement obiekt jest aktualizowany, skojarzone obiekty robocze nie są synchronizowane ze zmianami, a ClusterResourcePlacementWorkSynchronized stan warunku jest wyświetlany jako False.

Uwaga 16.

Aby uzyskać więcej informacji o tym, dlaczego synchronizacja obiektów roboczych kończy się niepowodzeniem, możesz sprawdzić dzienniki kontrolera generatora pracy.

Przyczyna

Ten problem może wystąpić z jednego z następujących powodów:

  • Kontroler napotka błąd podczas próby wygenerowania odpowiedniego obiektu roboczego.
  • Obiekt z kopertą nie jest poprawnie sformatowany.

Analiza przypadku

W poniższym przykładzie ClusterResourcePlacement program próbuje propagować zasób do wybranego klastra, ale obiekt roboczy nie jest aktualizowany w celu odzwierciedlenia najnowszych zmian, ponieważ wybrany klaster został zakończony.

Specyfikacja clusterResourcePlacement

spec:
  resourceSelectors:
    - group: rbac.authorization.k8s.io
      kind: ClusterRole
      name: secret-reader
      version: v1
  policy:
    placementType: PickN
    numberOfClusters: 1
  strategy:
    type: RollingUpdate

Stan 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 W stanie ClusterResourcePlacementWorkSynchronized stan warunku jest wyświetlany jako False. Komunikat oznacza, że obiekt crp1-work roboczy nie może wygenerować nowej zawartości w przestrzeni nazw fleet-member-kind-cluster-1 , ponieważ obecnie kończy działanie.

Rozwiązanie

W takiej sytuacji poniżej przedstawiono kilka potencjalnych rozwiązań:

  • Zmodyfikuj element za ClusterResourcePlacement pomocą nowo wybranego klastra.
  • Usuń element , ClusterResourcePlacement aby usunąć pracę przez odzyskiwanie pamięci.
  • Dołącz ponownie do klastra członkowskiego. Przestrzeń nazw można wygenerować tylko po ponownym dołączeniu klastra.

W innych sytuacjach możesz zdecydować się poczekać na zakończenie propagacji pracy.

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.