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 が最新の変更を取得しない場合、デバッグするにはどうすればよいですか?
ClusterResourcePlacement
ステータスのClusterResourcePlacementRolloutStarted
条件がtrueまたはfalseに設定されているかどうかを確認します。ClusterResourcePlacementApplied
条件が unknown、false、または true に設定されているかどうかを確認。- unknown場合は、リソースがまだメンバー クラスターに適用されているため、プロセスが完了するまで待ちます。 状態が unknown のまま しばらくの間、 issue を開きます。これは通常とは異なる動作であるためです。
- falseの場合は、「 ClusterResourcePlacementApplied 条件の状態を false に設定してデバッグする方法を参照してください。
- true の場合、リソースがハブ クラスターに存在することを確認します。
- 特定のクラスターの
ClusterResourcePlacement
状態の [placementStatuses
] セクションを確認します。FailedPlacements
セクションでは、リソース アプリケーションのエラーの理由を示す必要があります。
ClusterResourcePlacement デプロイの最新の ClusterSchedulingPolicySnapshot を見つけて確認するにはどうすればよいですか?
ClusterResourcePlacement
API デプロイの最新のClusterSchedulingPolicySnapshot
を見つけるには、次のコマンドを実行します。
kubectl get clusterschedulingpolicysnapshot -l kubernetes-fleet.io/is-latest-snapshot=true,kubernetes-fleet.io/parent-CRP={CRPName}
Note
このコマンドでは、 {CRPName}
を実際の ClusterResourcePlacement
名に置き換えます。
次に、 ClusterSchedulingPolicySnapshot
を ClusterResourcePlacement
ポリシーと比較して、'ClusterResourcePlacement' 仕様の numberOfClusters
フィールドを除外して、それらが一致することを確認します。
配置の種類が PickN
されている場合は、 ClusterResourcePlacement
ポリシーで要求されたクラスターの数が、 number-of-clusters
ラベルの値と一致するかどうかを確認します。
最新の ClusterResourceBinding リソースを見つけるにはどうすればよいですか?
次のコマンドは、ClusterResourcePlacement
に関連付けられているすべてのClusterResourceBindings
インスタンスを一覧表示します。
Kubectl get clusterresourcebinding -l kubernetes-fleet.io/parent-CRP={CRPName}
Note
このコマンドでは、 {CRPName}
を実際の ClusterResourcePlacement
名に置き換えます。
例
次のコマンドを実行して、
ClusterResourcePlacement
デプロイの状態を表示します。 この場合、ClusterResourcePlacement
名はtest-crp
。kubectl describe clusterresourceplacement test-crp
出力例を次に示します。
test-crp
状態のplacementStatuses
セクションから、リソースが 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: 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}
Note
このコマンドでは、 {CRPName}
を実際の ClusterResourcePlacement
名に置き換えます。
ClusterResourcePlacement に関連付けられている正しい作業リソースを見つけるにはどうすればよいですか?
正しい作業リソースを見つけるには、次の手順に従います。
メンバー クラスターの名前空間と
ClusterResourcePlacement
名を識別します。 名前空間の形式はfleet-member-{clusterName}
。作業リソースを取得するには、次のコマンドを実行します。
kubectl get work -n fleet-member-{clusterName} -l kubernetes-fleet.io/parent-CRP={CRPName}
Note
このコマンドでは、
{clusterName}
と{CRPName}
を、最初の手順で識別した名前に置き換えます。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。