共用方式為


針對 Azure Kubernetes Fleet Manager 中的 ClusterResourcePlacement API 進行疑難解答

當您使用 Azure Kubernetes Fleet Manager 時,此疑難解答指南可協助您解決 ClusterResourcePlacement API 對象相關問題。 針對中樞叢集上的這些錯誤進行疑難解答需要瞭解下列物件:

  • ClusterResourceSnapshot
  • ClusterSchedulingPolicySnapshot
  • ClusterResourceBinding
  • Work

如需每個物件的詳細資訊,請參閱 API 參考

ClusterResourcePlacement 部署的完整進度

瞭解自定義資源的進展和狀態 ClusterResourcePlacement 對於診斷和識別失敗至關重要。 您可以使用下列命令來檢視自訂資源的狀態 ClusterResourcePlacement

kubectl describe clusterresourceplacement <name>

如需詳細資訊,請參閱 使用 ClusterResourcePlacement API 將資源傳播至成員叢集

的完整進展 ClusterResourcePlacement 如下:

  1. ClusterResourcePlacementScheduled:指出資源已排程放置。

    如果為 false,請參閱 如何針對 ClusterResourcePlacementScheduled 條件狀態為 false 進行疑難解答。

  2. ClusterResourcePlacementRolloutStarted:指出首度推出程式已經開始。

    如果為 false,請參閱 如何針對 ClusterResourcePlacementRolloutStarted 條件狀態為 false 進行疑難解答。

  3. ClusterResourcePlacementOverridden:表示已覆寫資源。

    如果為 false,請參閱 如何針對 ClusterResourcePlacementOverridden 條件狀態為 false 進行疑難解答。

  4. ClusterResourcePlacementWorkSynchronized:指出已同步處理工作物件。

    如果為 false,請參閱 如何針對 ClusterResourcePlacementWorkSynchronized 條件狀態為 false 進行疑難解答。

  5. ClusterResourcePlacementApplied:指出已套用資源。

    如果為 false,請參閱 如何針對 ClusterResourcePlacementApplied 條件狀態為 false 進行疑難解答。

  6. ClusterResourcePlacementAvailable:指出資源可供使用。

    如果為 false,請參閱 如何針對 ClusterResourcePlacementAvailable 條件狀態為 false 進行疑難解答。

常見問題集

如果某些叢集未如預期般選取,如何進行偵錯?

檢查 的狀態 ClusterSchedulingPolicySnapshot 以判斷選取的叢集,以及其選取原因。

如果選取的叢集沒有預期的資源,或 ClusterResourcePlacement 未挑選最新的變更,如何進行偵錯?

  1. ClusterResourcePlacementRolloutStarted檢查狀態中的ClusterResourcePlacement條件是否設定為 truefalse
  2. ClusterResourcePlacementApplied檢查條件是否設定為未知falsetrue
  3. placementStatuses檢查特定叢集狀態中的 ClusterResourcePlacement 區段。 區 FailedPlacements 段應該提供任何資源應用程式失敗的原因。

如何尋找及驗證 ClusterResourcePlacement 部署的最新 ClusterSchedulingPolicySnapshot?

若要尋找 API 部署的最新ClusterSchedulingPolicySnapshotClusterResourcePlacement版本,請執行下列命令:

kubectl get clusterschedulingpolicysnapshot -l kubernetes-fleet.io/is-latest-snapshot=true,kubernetes-fleet.io/parent-CRP={CRPName}

注意

在這裡命令中,以您的ClusterResourcePlacement名稱取代 {CRPName}

然後,將與 ClusterResourcePlacement 原則進行比較ClusterSchedulingPolicySnapshot,以確定它們相符,並排除 numberOfClusters 『ClusterResourcePlacement』 規格中的字段。

如果放置類型為 PickN,請檢查原則中 ClusterResourcePlacement 要求的叢集數目是否符合標籤的值 number-of-clusters

如何尋找最新的 ClusterResourceBinding 資源?

下列命令會列出與 ClusterResourcePlacement相關聯的所有ClusterResourceBindings實例:

Kubectl get clusterresourcebinding -l kubernetes-fleet.io/parent-CRP={CRPName}

注意

在這裡命令中,以您的ClusterResourcePlacement名稱取代 {CRPName}

範例

  1. 執行下列命令以檢視部署的狀態 ClusterResourcePlacement 。 在這裡情況下, ClusterResourcePlacement 名稱為 test-crp

    kubectl describe clusterresourceplacement test-crp
    
  2. 以下為範例輸出。 從狀態的 test-crpplacementStatuses段中,請注意,它已將資源分散到兩個成員叢集,因此有兩ClusterResourceBindings個實例:

    status:
      conditions:
      - lastTransitionTime: "2023-11-23T00:49:29Z"
        ...
      placementStatuses:
      - clusterName: kind-cluster-1
        conditions:
          ...
          type: ResourceApplied
      - clusterName: kind-cluster-2
        conditions:
          ...
          reason: ApplySucceeded
          status: "True"
          type: ResourceApplied
    
  3. 若要取得 ClusterResourceBindings 值,請執行下列命令:

    kubectl get clusterresourcebinding -l kubernetes-fleet.io/parent-CRP=test-crp 
    
    NAME                               WORKCREATED   RESOURCESAPPLIED   AGE
    test-crp-kind-cluster-1-be990c3e   True          True               33s
    test-crp-kind-cluster-2-ec4d953c   True          True               33s
    

    輸出會列出與test-crp相關聯的所有ClusterResourceBindings實例。 資源 ClusterResourceBinding 名稱會使用下列格式:

    {CRPName}-{clusterName}-{suffix}

如何尋找最新的 ClusterResourceSnapshot 資源?

若要尋找最新的 ClusterResourceSnapshot 資源,請執行下列命令:

kubectl get clusterresourcesnapshot -l kubernetes-fleet.io/is-latest-snapshot=true,kubernetes-fleet.io/parent-CRP={CRPName}

注意

在這裡命令中,以您的ClusterResourcePlacement名稱取代 {CRPName}

如何找到與 ClusterResourcePlacement 相關聯的正確工作資源?

若要尋找正確的工作資源,請遵循下列步驟:

  1. 識別成員叢集命名空間和 ClusterResourcePlacement 名稱。 命名空間格式為 fleet-member-{clusterName}

  2. 若要取得工作資源,請執行下列命令:

    kubectl get work -n fleet-member-{clusterName} -l kubernetes-fleet.io/parent-CRP={CRPName}
    

    注意

    在此命令中,將和 {CRPName} 取代{clusterName}為您在第一個步驟中識別的名稱。

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。