針對 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
如下:
ClusterResourcePlacementScheduled:指出資源已排程放置。
如果為 false,請參閱 如何針對 ClusterResourcePlacementScheduled 條件狀態為 false 進行疑難解答。
ClusterResourcePlacementRolloutStarted:指出首度推出程式已經開始。
如果為 false,請參閱 如何針對 ClusterResourcePlacementRolloutStarted 條件狀態為 false 進行疑難解答。
ClusterResourcePlacementOverridden:表示已覆寫資源。
如果為 false,請參閱 如何針對 ClusterResourcePlacementOverridden 條件狀態為 false 進行疑難解答。
ClusterResourcePlacementWorkSynchronized:指出已同步處理工作物件。
如果為 false,請參閱 如何針對 ClusterResourcePlacementWorkSynchronized 條件狀態為 false 進行疑難解答。
ClusterResourcePlacementApplied:指出已套用資源。
如果為 false,請參閱 如何針對 ClusterResourcePlacementApplied 條件狀態為 false 進行疑難解答。
ClusterResourcePlacementAvailable:指出資源可供使用。
如果為 false,請參閱 如何針對 ClusterResourcePlacementAvailable 條件狀態為 false 進行疑難解答。
常見問題集
如果某些叢集未如預期般選取,如何進行偵錯?
檢查 的狀態 ClusterSchedulingPolicySnapshot
以判斷選取的叢集,以及其選取原因。
如果選取的叢集沒有預期的資源,或 ClusterResourcePlacement 未挑選最新的變更,如何進行偵錯?
ClusterResourcePlacementRolloutStarted
檢查狀態中的ClusterResourcePlacement
條件是否設定為 true 或 false。- 如果 為 false,請參閱 如何偵錯 ClusterResourcePlacementScheduled 條件狀態設定為 false。
- 如果 為 true,請移至步驟 2。
ClusterResourcePlacementApplied
檢查條件是否設定為未知、false 或 true。- 如果 未知,請等候進程完成,因為資源仍在套用至成員叢集。 如果狀態持續 一段時間未知 ,請開啟 問題 ,因為這是不尋常的行為。
- 如果 為 false,請參閱 如何偵錯 ClusterResourcePlacementApplied 條件狀態設定為 false。
- 如果 為 true,請確認資源存在於中樞叢集上。
placementStatuses
檢查特定叢集狀態中的ClusterResourcePlacement
區段。 區FailedPlacements
段應該提供任何資源應用程式失敗的原因。
如何尋找及驗證 ClusterResourcePlacement 部署的最新 ClusterSchedulingPolicySnapshot?
若要尋找 API 部署的最新ClusterSchedulingPolicySnapshot
ClusterResourcePlacement
版本,請執行下列命令:
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}
。
範例
執行下列命令以檢視部署的狀態
ClusterResourcePlacement
。 在這裡情況下,ClusterResourcePlacement
名稱為test-crp
。kubectl describe clusterresourceplacement test-crp
以下為範例輸出。 從狀態的
test-crp
區placementStatuses
段中,請注意,它已將資源分散到兩個成員叢集,因此有兩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-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 相關聯的正確工作資源?
若要尋找正確的工作資源,請遵循下列步驟:
識別成員叢集命名空間和
ClusterResourcePlacement
名稱。 命名空間格式為fleet-member-{clusterName}
。若要取得工作資源,請執行下列命令:
kubectl get work -n fleet-member-{clusterName} -l kubernetes-fleet.io/parent-CRP={CRPName}
注意
在此命令中,將和
{CRPName}
取代{clusterName}
為您在第一個步驟中識別的名稱。
與我們連絡,以取得說明
如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。