Udostępnij za pośrednictwem


Niepowodzenie propagacji zasobów: ClusterResourcePlacementAvailable ma wartość False

W tym artykule omówiono sposób rozwiązywania problemów ClusterResourcePlacementAvailable podczas propagacji zasobów przy użyciu interfejsu ClusterResourcePlacement API obiektów w usłudze Microsoft Azure Kubernetes Fleet Manager.

Symptomy

W przypadku używania obiektu interfejsu ClusterResourcePlacement API w usłudze Azure Kubernetes Fleet Manager do propagowania zasobów wdrożenie kończy się niepowodzeniem. Stan ClusterResourcePlacementAvailable jest wyświetlany jako False.

Przyczyna

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

  • Klaster członkowski nie ma wystarczającej dostępności zasobów.
  • Wdrożenie zawiera nieprawidłową nazwę obrazu.

Analiza przypadku

W poniższym przykładzie pokazano, że ClusterResourcePlacement wdrożenie nie jest propagowane do klastra członkowskiego z powodu nieprawidłowej nazwy obrazu.

Specyfikacje clusterResourcePlacement

apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ClusterResourcePlacement
metadata:
  name: crp
spec:
  resourceSelectors:
    - group: ""
      kind: Namespace
      name: test-ns
      version: v1
  policy:
    placementType: PickN
    numberOfClusters: 1
  strategy:
    type: RollingUpdate

Stan ClusterResourcePlacement

status:
  conditions:
  - lastTransitionTime: "2024-05-14T18:52:30Z"
    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:52:31Z"
    message: All 1 cluster(s) start rolling out the latest resource
    observedGeneration: 1
    reason: RolloutStarted
    status: "True"
    type: ClusterResourcePlacementRolloutStarted
  - lastTransitionTime: "2024-05-14T18:52:31Z"
    message: No override rules are configured for the selected resources
    observedGeneration: 1
    reason: NoOverrideSpecified
    status: "True"
    type: ClusterResourcePlacementOverridden
  - lastTransitionTime: "2024-05-14T18:52:31Z"
    message: Works(s) are succcesfully created or updated in 1 target cluster(s)'
      namespaces
    observedGeneration: 1
    reason: WorkSynchronized
    status: "True"
    type: ClusterResourcePlacementWorkSynchronized
  - lastTransitionTime: "2024-05-14T18:52:31Z"
    message: The selected resources are successfully applied to 1 cluster(s)
    observedGeneration: 1
    reason: ApplySucceeded
    status: "True"
    type: ClusterResourcePlacementApplied
  - lastTransitionTime: "2024-05-14T18:52:31Z"
    message: The selected resources in 1 cluster(s) are still not available yet
    observedGeneration: 1
    reason: ResourceNotAvailableYet
    status: "False"
    type: ClusterResourcePlacementAvailable
  observedResourceIndex: "0"
  placementStatuses:
  - clusterName: kind-cluster-1
    conditions:
    - lastTransitionTime: "2024-05-14T18:52:30Z"
      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:52:31Z"
      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:52:31Z"
      message: No override rules are configured for the selected resources
      observedGeneration: 1
      reason: NoOverrideSpecified
      status: "True"
      type: Overridden
    - lastTransitionTime: "2024-05-14T18:52:31Z"
      message: All of the works are synchronized to the latest
      observedGeneration: 1
      reason: AllWorkSynced
      status: "True"
      type: WorkSynchronized
    - lastTransitionTime: "2024-05-14T18:52:31Z"
      message: All corresponding work objects are applied
      observedGeneration: 1
      reason: AllWorkHaveBeenApplied
      status: "True"
      type: Applied
    - lastTransitionTime: "2024-05-14T18:52:31Z"
      message: Work object crp1-work isn't available
      observedGeneration: 1
      reason: NotAllWorkAreAvailable
      status: "False"
      type: Available
    failedPlacements:
    - condition:
        lastTransitionTime: "2024-05-14T18:52:31Z"
        message: Manifest is trackable but not available yet
        observedGeneration: 1
        reason: ManifestNotAvailableYet
        status: "False"
        type: Available
      group: apps
      kind: Deployment
      name: my-deployment
      namespace: test-ns
      version: v1
  selectedResources:
  - kind: Namespace
    name: test-ns
    version: v1
  - group: apps
    kind: Deployment
    name: my-deployment
    namespace: test-ns
    version: v1

failedPlacements W sekcji dla kind-cluster-1pola wyjaśniono, message dlaczego zasób nie został zastosowany w klastrze członkowskim. W poprzedniej conditions sekcji Applied warunek jest kind-cluster-1 oflagowany jako false i pokazuje przyczynę NotAllWorkHaveBeenApplied . Oznacza to, że Work obiekt przeznaczony dla klastra kind-cluster-1 członkowskiego nie został zastosowany. Aby uzyskać więcej informacji, zobacz How to find the correct Work resource associated with ClusterResourcePlacement.

Stan pracy typu cluster-1

status:
conditions:
- lastTransitionTime: "2024-05-14T18:52:31Z"
  message: Work is applied successfully
  observedGeneration: 1
  reason: WorkAppliedCompleted
  status: "True"
  type: Applied
- lastTransitionTime: "2024-05-14T18:52:31Z"
  message: Manifest {Ordinal:1 Group:apps Version:v1 Kind:Deployment Resource:deployments
  Namespace:test-ns Name:my-deployment} is not available yet
  observedGeneration: 1
  reason: WorkNotAvailableYet
  status: "False"
  type: Available
  manifestConditions:
- conditions:
  - lastTransitionTime: "2024-05-14T18:52:31Z"
    message: Manifest is already up to date
    reason: ManifestAlreadyUpToDate
    status: "True"
    type: Applied
  - lastTransitionTime: "2024-05-14T18:52:31Z"
    message: Manifest is trackable and available now
    reason: ManifestAvailable
    status: "True"
    type: Available
    identifier:
    kind: Namespace
    name: test-ns
    ordinal: 0
    resource: namespaces
    version: v1
- conditions:
  - lastTransitionTime: "2024-05-14T18:52:31Z"
    message: Manifest is already up to date
    observedGeneration: 1
    reason: ManifestAlreadyUpToDate
    status: "True"
    type: Applied
  - lastTransitionTime: "2024-05-14T18:52:31Z"
    message: Manifest is trackable but not available yet
    observedGeneration: 1
    reason: ManifestNotAvailableYet
    status: "False"
    type: Available
    identifier:
    group: apps
    kind: Deployment
    name: my-deployment
    namespace: test-ns
    ordinal: 1
    resource: deployments
    version: v1

Available Sprawdź stan .kind-cluster-1 Widać, że my-deployment wdrożenie nie jest jeszcze dostępne w klastrze członkowskim. Sugeruje to, że problem może mieć wpływ na manifest wdrożenia.

Rozwiązanie

W takiej sytuacji potencjalnym rozwiązaniem jest sprawdzenie wdrożenia w klastrze członkowskim, ponieważ komunikat wskazuje, że główną przyczyną problemu jest nieprawidłowa nazwa obrazu. Po zidentyfikowaniu tej nazwy obrazu można poprawić manifest wdrożenia i zaktualizować go. Po naprawieniu i zaktualizowaniu manifestu ClusterResourcePlacement zasobu interfejs API obiektu automatycznie propaguje poprawiony zasób do klastra członkowskiego.

W przypadku wszystkich innych sytuacji upewnij się, że propagowany zasób jest poprawnie skonfigurowany. Ponadto sprawdź, czy wybrany klaster ma wystarczającą dostępną pojemność, aby pomieścić nowe zasoby.

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.