Aracılığıyla paylaş


Kaynak yayma hatası: Küme Kaynak Yerleşimi Uygulaması Yanlış

Bu makalede, Microsoft Azure Kubernetes Fleet Manager'da nesne API'sini ClusterResourcePlacementApplied kullanarak kaynakları yayma sorunlarını giderme ClusterResourcePlacement adımları anlatılmaktadır.

Belirti -leri

Kaynakları yaymak için Azure Kubernetes Fleet Manager'da API nesnesini kullandığınızda ClusterResourcePlacement dağıtım başarısız olur. ClusterResourcePlacementApplied durumu False olarak gösterilir.

Nedeni

Bu sorun aşağıdaki nedenlerden biri nedeniyle oluşabilir:

  • Kaynak kümede zaten var ve filo denetleyicisi tarafından yönetilmiyor. Bu sorunu çözmek için, ClusterResourcePlacement bildirim YAML dosyasını güncelleyerek ApplyStrategy içinde AllowCoOwnership kullanılmasını sağlayın, böylece filo denetleyicisi kaynağı yönetebilir.
  • Başka bir ClusterResourcePlacement dağıtım, seçilen kümenin kaynağını farklı bir uygulama stratejisi kullanarak zaten yönetiyor.
  • Dağıtım, söz dizimi hataları veya geçersiz kaynak yapılandırmaları nedeniyle manifesti uygulamaz. Bu durum, bir kaynak bir zarf nesnesi aracılığıyla yayılırsa da oluşabilir.

Sorun giderme adımları

  1. ClusterResourcePlacement durumunu görüntüleyin ve placementStatuses bölümünü bulun. placementStatuses değerini denetleyerek hangi kümelerin koşulunun ResourceApplied olarak ayarlandığını belirleyin ve onların clusterName değerini not edin.
  2. Work Hub kümesindeki nesneyi bulun. Üye kümeyle ilişkili nesneyi bulmak Work için tanımlanan clusterName öğesini kullanın. Daha fazla bilgi için bkz. ile ClusterResourcePlacementilişkilendirilmiş doğru Çalışma kaynağını bulma.
  3. Başarılı kaynak uygulamasını engelleyen belirli sorunları anlamak için nesnenin durumunu Work denetleyin.

Örnek olay incelemesi

Aşağıdaki örnekte, ClusterResourcePlacement dağıtım içeren bir ad alanını iki üye kümeye yaymaya çalışıyor. Ancak ad alanı, özellikle bir üye küme olan kind-cluster-1 üzerinde zaten var.

ClusterResourcePlacement özellikleri

apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ClusterResourcePlacement
metadata:
  name: crp
spec:
  policy:
    clusterNames:
    - kind-cluster-1
    - kind-cluster-2
    placementType: PickFixed
  resourceSelectors:
  - group: ""
    kind: Namespace
    name: test-ns
    version: v1
  revisionHistoryLimit: 10
  strategy:
    type: RollingUpdate

ClusterResourcePlacement durumu

status:
  conditions:
  - lastTransitionTime: "2024-05-07T23:32:40Z"
    message:couldn't find all the clusters needed as specified by the scheduling
      policy
    observedGeneration: 1
    reason: SchedulingPolicyUnfulfilled
    status: "False"
    type: ClusterResourcePlacementScheduled
  - lastTransitionTime: "2024-05-07T23:32:40Z"
    message: All 2 cluster(s) start rolling out the latest resource
    observedGeneration: 1
    reason: RolloutStarted
    status: "True"
    type: ClusterResourcePlacementRolloutStarted
  - lastTransitionTime: "2024-05-07T23:32:40Z"
    message: No override rules are configured for the selected resources
    observedGeneration: 1
    reason: NoOverrideSpecified
    status: "True"
    type: ClusterResourcePlacementOverridden
  - lastTransitionTime: "2024-05-07T23:32:40Z"
    message: Works(s) are succcesfully created or updated in the 2 target clusters'
      namespaces
    observedGeneration: 1
    reason: WorkSynchronized
    status: "True"
    type: ClusterResourcePlacementWorkSynchronized
  - lastTransitionTime: "2024-05-07T23:32:40Z"
    message: Failed to apply resources to 1 clusters, please check the `failedPlacements`
      status
    observedGeneration: 1
    reason: ApplyFailed
    status: "False"
    type: ClusterResourcePlacementApplied
  observedResourceIndex: "0"
  placementStatuses:
  - clusterName: kind-cluster-2
    conditions:
    - lastTransitionTime: "2024-05-07T23:32:40Z"
      message: 'Successfully scheduled resources for placement in kind-cluster-2 (affinity
        score: 0, topology spread score: 0): picked by scheduling policy'
      observedGeneration: 1
      reason: Scheduled
      status: "True"
      type: Scheduled
    - lastTransitionTime: "2024-05-07T23:32:40Z"
      message: Detected the new changes on the resources and started the rollout process
      observedGeneration: 1
      reason: RolloutStarted
      status: "True"
      type: RolloutStarted
    - lastTransitionTime: "2024-05-07T23:32:40Z"
      message: No override rules are configured for the selected resources
      observedGeneration: 1
      reason: NoOverrideSpecified
      status: "True"
      type: Overridden
    - lastTransitionTime: "2024-05-07T23:32:40Z"
      message: All of the works are synchronized to the latest
      observedGeneration: 1
      reason: AllWorkSynced
      status: "True"
      type: WorkSynchronized
    - lastTransitionTime: "2024-05-07T23:32:40Z"
      message: All corresponding work objects are applied
      observedGeneration: 1
      reason: AllWorkHaveBeenApplied
      status: "True"
      type: Applied
    - lastTransitionTime: "2024-05-07T23:32:49Z"
      message: The availability of work object crp-4-work isn't trackable
      observedGeneration: 1
      reason: WorkNotTrackable
      status: "True"
      type: Available
  - clusterName: kind-cluster-1
    conditions:
    - lastTransitionTime: "2024-05-07T23:32:40Z"
      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-07T23:32:40Z"
      message: Detected the new changes on the resources and started the rollout process
      observedGeneration: 1
      reason: RolloutStarted
      status: "True"
      type: RolloutStarted
    - lastTransitionTime: "2024-05-07T23:32:40Z"
      message: No override rules are configured for the selected resources
      observedGeneration: 1
      reason: NoOverrideSpecified
      status: "True"
      type: Overridden
    - lastTransitionTime: "2024-05-07T23:32:40Z"
      message: All of the works are synchronized to the latest
      observedGeneration: 1
      reason: AllWorkSynced
      status: "True"
      type: WorkSynchronized
    - lastTransitionTime: "2024-05-07T23:32:40Z"
      message: Work object crp-4-work isn't applied
      observedGeneration: 1
      reason: NotAllWorkHaveBeenApplied
      status: "False"
      type: Applied
    failedPlacements:
    - condition:
        lastTransitionTime: "2024-05-07T23:32:40Z"
        message: 'Failed to apply manifest: failed to process the request due to a
          client error: resource exists and isn't managed by the fleet controller
          and co-ownernship is disallowed'
        reason: ManifestsAlreadyOwnedByOthers
        status: "False"
        type: Applied
      kind: Namespace
      name: test-ns
      version: v1
  selectedResources:
  - kind: Namespace
    name: test-ns
    version: v1
  - group: apps
    kind: Deployment
    name: test-nginx
    namespace: test-ns
    version: v1

failedPlacements bölümünde kind-cluster-1, message alanlar kaynağın üye kümeye neden uygulanmadığını açıklar. Önceki conditions bölümde, Applied koşulu false olarak kind-cluster-1 işaretlenir ve NotAllWorkHaveBeenApplied nedeni gösterilir. Bu, üyelik kümesi kind-cluster-1 için hedeflenen Work nesnenin uygulanmadığını gösterir. Daha fazla bilgi için bkz. ile ClusterResourcePlacementilişkilendirilmiş doğru Çalışma kaynağını bulma.

kind-cluster-1'in çalışma durumu

 status:
  conditions:
  - lastTransitionTime: "2024-05-07T23:32:40Z"
    message: 'Apply manifest {Ordinal:0 Group: Version:v1 Kind:Namespace Resource:namespaces
      Namespace: Name:test-ns} failed'
    observedGeneration: 1
    reason: WorkAppliedFailed
    status: "False"
    type: Applied
  - lastTransitionTime: "2024-05-07T23:32:40Z"
    message: ""
    observedGeneration: 1
    reason: WorkAppliedFailed
    status: Unknown
    type: Available
  manifestConditions:
  - conditions:
    - lastTransitionTime: "2024-05-07T23:32:40Z"
      message: 'Failed to apply manifest: failed to process the request due to a client
        error: resource exists and isn't managed by the fleet controller and co-ownernship
        is disallowed'
      reason: ManifestsAlreadyOwnedByOthers
      status: "False"
      type: Applied
    - lastTransitionTime: "2024-05-07T23:32:40Z"
      message: Manifest isn't applied yet
      reason: ManifestApplyFailed
      status: Unknown
      type: Available
    identifier:
      kind: Namespace
      name: test-ns
      ordinal: 0
      resource: namespaces
      version: v1
  - conditions:
    - lastTransitionTime: "2024-05-07T23:32:40Z"
      message: Manifest is already up to date
      observedGeneration: 1
      reason: ManifestAlreadyUpToDate
      status: "True"
      type: Applied
    - lastTransitionTime: "2024-05-07T23:32:51Z"
      message: Manifest is trackable and available now
      observedGeneration: 1
      reason: ManifestAvailable
      status: "True"
      type: Available
    identifier:
      group: apps
      kind: Deployment
      name: test-nginx
      namespace: test-ns
      ordinal: 1
      resource: deployments
      version: v1

Work Durumu, özellikle de manifestConditions bölümü denetleyin. Ad alanının uygulanalamadığını ancak ad alanı içindeki dağıtımın hub'dan üye kümeye yayıldığını görebilirsiniz.

Çözüm

Bu durumda, olası bir çözüm, AllowCoOwnership öğesini ApplyStrategy politikasında true olarak ayarlamaktır. Ancak, kaynaklar paylaşılmayabileceği için bu kararın kullanıcı tarafından verilmesi gerektiğini fark etmek önemlidir.

Ayrıca, kaynakların neden kullanılamadığı hakkında daha fazla içgörü için İş Denetleyicisi Uygula günlüklerini gözden geçirebilirsiniz.

Yardım için bize ulaşın

Sorularınız varsa veya yardıma ihtiyacınız varsa bir destek isteği oluşturun veya Azure topluluk desteğine sorun. Ürün geri bildirimini Azure geri bildirim topluluğuna da gönderebilirsiniz.