GKE On-Prem API に登録されているクラスタのトラブルシューティング

このページでは、Google Cloud コンソールで Google Distributed Cloud ユーザー クラスタを作成する際の問題を調査する方法について説明します。

GKE On-Prem API は、Google Cloud がホストする API で、Terraform や標準の Google Cloud ツールを使用して、オンプレミス クラスタのライフサイクルを管理できます。GKE On-Prem API は、Google Cloud のインフラストラクチャで動作します。Terraform、Google Cloud コンソール、Google Cloud CLI は API のクライアントであり、API を使用してデータセンターのクラスタを作成、更新、アップグレード、削除します。標準クライアントを使用してクラスタを作成した場合、クラスタは GKE On-Prem API に登録されます。つまり、標準クライアントを使用してクラスタのライフサイクルを管理できます。(ただし、いくつか例外があります)。

さらにサポートが必要な場合は、Cloud カスタマーケアにお問い合わせください。

管理クラスタが [クラスタの基本] プルダウン リストに表示されない

Google Cloud コンソールでユーザー クラスタを作成する前に、管理クラスタをフリートに登録する必要があります。Google Cloud コンソールの [クラスタの基本] セクションのプルダウン リストに管理クラスタが表示されない場合、管理クラスタが登録されていないか、gcloud container fleet memberships register コマンドを使用して登録されたかのいずれかです。この gcloud コマンドでは管理クラスタは正しく登録されません。

登録ステータスを確認します。

  • Google Cloud コンソールで、[Kubernetes Engine] > [クラスタ] ページに移動し、ユーザー クラスタの作成を試みたのと同じ Google Cloud プロジェクトを選択します。

    [GKE クラスタ] ページに移動

    • 管理クラスタがリストに表示されない場合は、管理クラスタを登録するをご覧ください。

    • 管理クラスタがリストに表示される場合、この動作はクラスタが gcloud container hub memberships register コマンドを使用して登録されたことを示します。この gcloud コマンドでは管理クラスタは正しく登録されません。

登録に関する問題を解決するには、次の手順を行います。

  1. 管理クラスタのフリート メンバーシップを削除します。

    gcloud container fleet memberships delete ADMIN_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=global
    
    • ADMIN_CLUSTER_NAME: 管理クラスタの名前。
    • PROJECT_ID: フリート ホスト プロジェクトの ID。これは、Google Cloud コンソールでユーザー クラスタを作成しようとしたときに選択したプロジェクトです。
  2. 管理クラスタを登録するの手順に沿ってクラスタを再登録します。

クラスタ作成のエラー

このセクションでは、Google Cloud コンソールでのクラスタ作成中に発生するエラーについて説明します。

リソースがすでに存在する場合のエラー

ユーザー クラスタの作成が、次のようなエラー メッセージで失敗します。

Resource 'projects/1234567890/[...]/user-cluster1'
already exists
Request ID: 129290123128705826

このエラー メッセージは、そのクラスタ名がすでに使用されていることを示します。

この問題の解決方法の一つは、クラスタを削除して再作成することです。

  1. クラスタを削除します
  2. 既存のクラスタと競合しない別の名前でクラスタをもう一度作成します。

反アフィニティ グループエラー

ユーザー クラスタの作成が、次のようなエラー メッセージで失敗します。

- Validation Category: VCenter
    - [FATAL] Hosts for AntiAffinityGroups: Anti-affinity groups enabled with
    available vsphere host number 1 less than 3, please add more vsphere hosts
    or disable anti-affinity groups.

VMware Distributed Resource Scheduler(DRS)の反アフィニティ ルールでは、vSphere 環境に少なくとも 3 つの物理ホストが必要です。問題を解決するには、次のとおり、クラスタの [クラスタの詳細] ページの [機能] セクションで [反アフィニティ グループ] を無効にします。

  1. Google Cloud コンソールで、[GKE クラスタ] ページに移動します。

    [GKE クラスタ] ページに移動

  2. ユーザー クラスタが存在する Google Cloud プロジェクトを選択します。

  3. クラスタリストでクラスタの名前をクリックし、[詳細] パネルの [詳細を表示] をクリックします。

  4. [機能] セクションで、 [編集] をクリックします。

  5. [反アフィニティ グループを有効にする] をオフにして、[完了] をクリックします。

  6. Google Cloud コンソールに「クラスタのステータス: 変更中」と表示されます。[詳細を表示] をクリックすると、[リソース ステータス条件] と [ステータス メッセージ] が表示されます。

競合する IP アドレスのエラー

ユーザー クラスタの作成が、次のようなエラー メッセージで失敗します。

- Validation Category: Network Configuration
- [FAILURE] CIDR, VIP and static IP (availability and overlapping): user: user
  cluster control plane VIP "10.251.133.132" overlaps with
  example-cluster1/control plane VIP "10.251.133.132"

Google Cloud コンソールの [クラスタの詳細] ページの [ロードバランサ] セクションにある、[コントロール プレーン VIP] や [Ingress VIP] などのフィールドは編集できません。IP アドレスの競合を解決するには、クラスタを削除して再作成します。

  1. クラスタを削除します
  2. 既存のクラスタと競合しない IP アドレスを使用して、もう一度クラスタを作成します。

正常でないクラスタを削除する

クラスタは、次のようなさまざまな理由により、正常な状態でなくなる可能性があります。

  • Connect Agent またはオンプレミス環境に関する接続の問題。
  • ユーザー クラスタの管理クラスタが削除されたか、管理クラスタとユーザー クラスタの間に接続の問題がある。
  • クラスタを削除する前に、クラスタの VM が削除された。

コンソールでクラスタを削除できない場合は、gcloud CLI コマンドを使用して、異常なクラスタから Google Cloud リソースを削除します。最近 gcloud CLI を更新していない場合は、次のコマンドを実行してコンポーネントを更新します。

gcloud components update

次に、Google Cloud リソースを削除します。

ユーザー クラスタ

  1. ユーザー クラスタを削除します。

    gcloud container vmware clusters delete USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --force \
      --allow-missing \
      --ignore-errors

    次のように置き換えます。

    • USER_CLUSTER_NAME: 削除するユーザー クラスタの名前。

    • PROJECT_ID: クラスタが登録されているプロジェクトの ID。

    • REGION: ユーザー クラスタに関連付けられた Google Cloud のロケーション。このロケーションはコンソールに表示されます。

      --force フラグを使用すると、ノードプールを持つクラスタが削除されます。--force フラグを使用せずに、まず ノードプールを削除してから、クラスタを削除する必要があります。

      --allow-missing フラグを使用すると、クラスタが見つからない場合にコマンドを続行できます。

      --ignore-errors フラグは、管理クラスタとユーザー クラスタに到達できない場合に Google Cloud リソースを削除しますF5 または vSphere の一部のリソースが残る可能性があります。残存リソースのクリーンアップについては、リソースのクリーンアップをご覧ください。

      このコマンドは、クラスタが存在する場合にクラスタを削除し、Google Cloud から GKE On-Prem API リソースとフリート メンバーシップ リソースの両方を削除します。

  2. GKE On-Prem API リソースが削除されたことを確認します。

    gcloud container vmware clusters list \
      --project=PROJECT_ID \
      --location=-

    --location=- に設定すると、すべてのリージョンのクラスタの一覧が取得されます。リストを絞り込む必要がある場合は、--location特定のリージョンに設定します。

  3. フリート メンバーシップ リソースが削除されたことを確認します。

    gcloud container fleet memberships list \
      --project=PROJECT_ID

管理クラスタ

  1. GKE On-Prem API に管理クラスタを登録した場合は、登録を解除します。

    gcloud container vmware admin-clusters unenroll ADMIN_CLUSTER_NAME \
     --project=PROJECT_ID \
     --location=REGION \
     --allow-missing 
    

    次のように置き換えます。

    • ADMIN_CLUSTER_NAME: 管理クラスタの名前。
    • PROJECT_ID: フリート ホスト プロジェクトの ID。
    • REGION: Google Cloud リージョン

    --allow-missing フラグを使用すると、フリートのメンバーシップが見つからない場合にクラスタの登録が解除されます。

    このコマンドは、Google Cloud から GKE On-Prem API リソースを削除します。

  2. フリートからクラスタを削除します。

    gcloud container fleet memberships delete ADMIN_CLUSTER_NAME \
     --project=PROJECT_ID \
     --location=global

    このコマンドによって、フリート メンバーシップ リソースが Google Cloud から削除されます。

  3. GKE On-Prem API リソースが削除されたことを確認します。

    gcloud container fleet memberships delete ADMIN_CLUSTER_NAME --project=FLEET_HOST_PROJECT_ID
    

    --location=- に設定すると、すべてのリージョンのクラスタの一覧が取得されます。リストを絞り込む必要がある場合は、--location特定のリージョンに設定します。

  4. フリート メンバーシップ リソースが削除されたことを確認します。

    gcloud container fleet memberships list \
      --project=PROJECT_ID

次のステップ

さらにサポートが必要な場合は、Cloud カスタマーケアにお問い合わせください。