概要
このトラブルシューティング ガイドは、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条件が unknown、false、または true に設定されているかどうかを確認します。- 不明な場合は、リソースがまだメンバー クラスターに適用されているため、プロセスが完了するまで待ちます。 状態がしばらく 不明 なままの場合は、通常とは異なる動作であるため 、問題 を開きます。
- false の場合は、「ClusterResourcePlacementApplied 条件の状態を false に設定してデバッグする方法」を参照してください。
- true の場合は、リソースがハブ クラスターに存在することを確認します。
- 特定のクラスターの状態における
placementStatusesのClusterResourcePlacementセクションを確認します。FailedPlacementsセクションでは、リソース アプリケーションのエラーの理由を示す必要があります。
ClusterResourcePlacement デプロイの最新の ClusterSchedulingPolicySnapshot を見つけて確認するにはどうすればよいですか?
ClusterSchedulingPolicySnapshot API デプロイの最新のClusterResourcePlacementを見つけるには、次のコマンドを実行します。
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セクションから、リソースが 2 つのメンバー クラスターに分散されているため、2 つの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: ResourceAppliedClusterResourceBindings値を取得するには、次のコマンドを実行します。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}を、最初の手順で識別した名前に置き換えます。