當您使用 Azure Kubernetes Fleet Manager 時,此疑難解答指南可協助您解決 ClusterResourcePlacement API 對象相關問題。 針對中樞叢集上的這些錯誤進行疑難解答需要瞭解下列物件:
ClusterResourceSnapshotClusterSchedulingPolicySnapshotClusterResourceBindingWork
如需每個物件的詳細資訊,請參閱 KubeFleet API 參考。
ClusterResourcePlacement 部署的完整進度
瞭解自定義資源的進展和狀態 ClusterResourcePlacement 對於診斷和識別失敗至關重要。 您可以使用下列命令來檢視自訂資源的狀態 ClusterResourcePlacement :
kubectl describe clusterresourceplacement <name>
如需詳細資訊,請參閱 使用 ClusterResourcePlacement API 將資源傳播至成員叢集。
ClusterResourcePlacement 的完整進展如下:
ClusterResourcePlacementScheduled:指出資源已排程放置。
如果條件狀態為 false,請參閱 如何在 ClusterResourcePlacementScheduled 條件狀態為 false 時進行疑難排解。
ClusterResourcePlacementRolloutStarted:表示部署過程已經開始。
如果為 false,請參閱 如何針對 ClusterResourcePlacementRolloutStarted 條件狀態為 false 進行疑難解答。
ClusterResourcePlacementOverridden:表示資源已被覆寫。
如果為 false,請參閱 如何針對 ClusterResourcePlacementOverridden 條件狀態為 false 進行疑難解答。
ClusterResourcePlacementWorkSynchronized:指出工作物件已同步。
如果為 false,請參閱 如何針對 ClusterResourcePlacementWorkSynchronized 條件狀態為 false 進行疑難解答。
ClusterResourcePlacementApplied:表示資源已被套用。
如果為 false,請參閱 如何針對 ClusterResourcePlacementApplied 條件狀態為 false 進行疑難解答。
ClusterResourcePlacementAvailable:指出資源可供使用。
如果為 false,請參閱 如何針對 ClusterResourcePlacementAvailable 條件狀態為 false 進行疑難解答。
FAQ
如果某些叢集未如預期般選取,如何進行偵錯?
檢查ClusterSchedulingPolicySnapshot的狀態以判斷選定的叢集及其選定原因。
如果選取的叢集沒有預期的資源,或 ClusterResourcePlacement 未挑選最新的變更,如何進行偵錯?
-
ClusterResourcePlacementRolloutStarted檢查狀態中的ClusterResourcePlacement條件是否設定為 true 或 false。- 如果 為 false,請參閱 如何偵錯 ClusterResourcePlacementScheduled 條件狀態設定為 false。
- 如果 為 true,請移至步驟 2。
-
ClusterResourcePlacementApplied檢查條件是否設定為未知、false 或 true。- 如果 未知,請等候進程完成,因為資源仍在套用至成員叢集。 如果狀態持續一段時間 未知 ,請開啟 問題 ,因為這是不尋常的行為。
- 如果 為 false,請參閱 如何偵錯 ClusterResourcePlacementApplied 條件狀態設定為 false。
- 如果 為 true,請確認資源存在於中樞叢集上。
- 在
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 。
然後,將 ClusterSchedulingPolicySnapshot 與 ClusterResourcePlacement 策略比較,以確保它們相符,並排除『ClusterResourcePlacement』規格中的 numberOfClusters 欄位。
如果放置類型為 PickN,請檢查原則中 ClusterResourcePlacement 要求的叢集數目是否符合標籤的值 number-of-clusters 。
如何尋找最新的 ClusterResourceBinding 資源?
下列命令會列出與 ClusterResourceBindings相關聯的所有ClusterResourcePlacement實例:
Kubectl get clusterresourcebinding -l kubernetes-fleet.io/parent-CRP={CRPName}
備註
在這裡命令中,以您的{CRPName}名稱取代 ClusterResourcePlacement 。
範例
執行下列命令以檢視部署的狀態
ClusterResourcePlacement。 在這裡情況下,ClusterResourcePlacement名稱為test-crp。kubectl describe clusterresourceplacement test-crp以下為範例輸出。 從
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若要取得
ClusterResourceBindings值,請執行下列命令:kubectl get clusterresourcebinding -l kubernetes-fleet.io/parent-CRP=test-crpNAME 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 相關聯的正確工作資源?
若要尋找正確的工作資源,請遵循下列步驟:
識別成員叢集命名空間和
ClusterResourcePlacement名稱。 命名空間格式為fleet-member-{clusterName}。若要取得工作資源,請執行下列命令:
kubectl get work -n fleet-member-{clusterName} -l kubernetes-fleet.io/parent-CRP={CRPName}備註
在此命令中,將
{clusterName}和{CRPName}替換為您在第一步識別的名稱。
與我們連絡,以取得說明
如果您有疑問,可以詢問 Azure 社群支援。 您也可以向 Azure 意見反應社群提交產品意見反應。