次の方法で共有


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の完全な進行は次のとおりです。

  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 の場合のトラブルシューティング方法を参照してください。

よく寄せられる質問

一部のクラスターが期待どおりに選択されていない場合にデバッグするにはどうすればよいですか?

ClusterSchedulingPolicySnapshotの状態を確認して、選択されたクラスターとその選択理由を確認します。

選択したクラスターに予想されるリソースがない場合、または ClusterResourcePlacement が最新の変更を取得しない場合、デバッグするにはどうすればよいですか?

  1. ClusterResourcePlacementステータスのClusterResourcePlacementRolloutStarted条件がtrueまたはfalseに設定されているかどうかを確認します。
    • false場合は、「に設定された ClusterResourcePlacementScheduled 条件の状態をデバッグする方法」を参照してください。
    • true場合は、手順 2 に進みます。
  2. ClusterResourcePlacementApplied条件が unknownfalse、または true に設定されているかどうかを確認
    • unknown場合は、リソースがまだメンバー クラスターに適用されているため、プロセスが完了するまで待ちます。 状態が unknown のまま しばらくの間、 issue を開きます。これは通常とは異なる動作であるためです。
    • falseの場合は、「 ClusterResourcePlacementApplied 条件の状態を false に設定してデバッグする方法を参照してください。
    • true の場合、リソースがハブ クラスターに存在することを確認します。
  3. 特定のクラスターの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 名に置き換えます。

次に、 ClusterSchedulingPolicySnapshotClusterResourcePlacement ポリシーと比較して、'ClusterResourcePlacement' 仕様の numberOfClusters フィールドを除外して、それらが一致することを確認します。

配置の種類が PickNされている場合は、 ClusterResourcePlacement ポリシーで要求されたクラスターの数が、 number-of-clusters ラベルの値と一致するかどうかを確認します。

最新の ClusterResourceBinding リソースを見つけるにはどうすればよいですか?

次のコマンドは、ClusterResourcePlacementに関連付けられているすべてのClusterResourceBindings インスタンスを一覧表示します。

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

Note

このコマンドでは、 {CRPName} を実際の ClusterResourcePlacement 名に置き換えます。

  1. 次のコマンドを実行して、 ClusterResourcePlacement デプロイの状態を表示します。 この場合、 ClusterResourcePlacement 名は test-crp

    kubectl describe clusterresourceplacement test-crp
    
  2. 出力例を次に示します。 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
    
  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
    

    出力には、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 に関連付けられている正しい作業リソースを見つけるにはどうすればよいですか?

正しい作業リソースを見つけるには、次の手順に従います。

  1. メンバー クラスターの名前空間と ClusterResourcePlacement 名を識別します。 名前空間の形式は fleet-member-{clusterName}

  2. 作業リソースを取得するには、次のコマンドを実行します。

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

    Note

    このコマンドでは、 {clusterName}{CRPName} を、最初の手順で識別した名前に置き換えます。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。