共用方式為


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

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

  • ClusterResourceSnapshot
  • ClusterSchedulingPolicySnapshot
  • ClusterResourceBinding
  • Work

如需每個物件的詳細資訊,請參閱 KubeFleet 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 進行疑難解答

FAQ

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

檢查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}

備註

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

然後,將 ClusterSchedulingPolicySnapshotClusterResourcePlacement 策略比較,以確保它們相符,並排除『ClusterResourcePlacement』規格中的 numberOfClusters 欄位。

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

如何尋找最新的 ClusterResourceBinding 資源?

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

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

備註

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

範例

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

    kubectl describe clusterresourceplacement test-crp
    
  2. 以下為範例輸出。 從 placementStatuses 區段的 test-crp 狀態中,需注意,已將資源分配到兩個成員叢集,因此有兩個 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
    

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

    {CRPName}-{clusterName}-{suffix}

如何尋找最新的 ClusterResourceSnapshot 資源?

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

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

備註

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

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

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

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

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

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

    備註

    在此命令中,將 {clusterName}{CRPName} 替換為您在第一步識別的名稱。

與我們連絡,以取得說明

如果您有疑問,可以詢問 Azure 社群支援。 您也可以向 Azure 意見反應社群提交產品意見反應。