このページでは、Google Cloud Console で Anthos clusters on VMware(GKE On-Prem)ユーザー クラスタを作成する際の問題を調査する方法について説明します。
管理クラスタが [クラスタの基本] プルダウン リストに表示されない
Google Cloud コンソールでユーザー クラスタを作成する前に、管理クラスタをフリートに登録する必要があります。Google Cloud コンソールの [クラスタの基本] セクションのプルダウン リストに管理クラスタが表示されない場合、管理クラスタが登録されていないか、gcloud container hub memberships register
コマンドを使用して登録されたかのいずれかです。
登録ステータスを確認します。
Google Cloud コンソールで [Anthos] > [クラスタ] ページに移動し、ユーザー クラスタの作成を試みたのと同じ Google Cloud プロジェクトを選択します。
管理クラスタがリストに表示されない場合は、管理クラスタを登録するをご覧ください。
管理クラスタがリストに表示される場合は、クラスタが
gcloud container hub memberships register
コマンドを使用して登録されたことを示します。このgcloud
コマンドで管理クラスタは、正しく登録されません。
登録の問題を解決するには:
管理ワークステーションで、メンバーシップ名を取得します。
kubectl describe membership membership \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG
管理クラスタの登録を解除します。次のコマンドで、それぞれの項目を置き換えます。
MEMBERSHIP_NAME
は、前のコマンドのメンバーシップ名に置き換えます。FLEET_HOST_PROJECT_ID
は、フリートホスト プロジェクトの ID に置き換えます。これは、Google Cloud コンソールでユーザー クラスタを作成しようとしたときに選択したプロジェクトです。ADMIN_CLUSTER_KUBECONFIG
は、管理クラスタの kubeconfig ファイルのパスに置き換えます。ADMIN_CLUSTER_CONTEXT
は、kubeconfig ファイルに含まれる管理クラスタのコンテキストに置き換えます。この値は、コマンドラインでkubectl config current-context
を実行すると取得できます。
gcloud container fleet memberships unregister MEMBERSHIP_NAME \ --project=FLEET_HOST_PROJECT_ID \ --kubeconfig=ADMIN_CLUSTER_KUBECONFIG \ --context=ADMIN_CLUSTER_CONTEXT
管理クラスタを登録するの手順に沿ってクラスタを再登録します。
クラスタ作成エラー
このセクションでは、Google Cloud コンソールでのクラスタ作成中に発生するエラーについて説明します。
既存のリソースエラー
ユーザー クラスタの作成が、次のようなエラー メッセージで失敗します。
Resource 'projects/1234567890/locations/europe-west1/vmwareClusters/user-cluster1'
already exists
Request ID: 129290123128705826
このエラー メッセージは、そのクラスタ名がすでに使用されていることを示します。
この問題を解決する 1 つの方法は:
既存のクラスタと競合しない別の名前でクラスタをもう一度作成する。
反アフィニティ グループエラー
ユーザー クラスタの作成が、次のようなエラー メッセージで失敗します。
- 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 つの物理ホストが必要です。問題を解決するには、クラスタの [クラスタの詳細] ページの [機能] セクションで [アンチアフィニティ グループ] を無効にします。次のとおりです。
Google Cloud コンソールで、Anthos の [クラスタ] ページに移動します。
ユーザー クラスタが存在するクラウド プロジェクトを選択します。
クラスタリストでクラスタの名前をクリックし、[詳細] パネルの [詳細を表示] をクリックします。
[機能] セクションで、
[編集] をクリックします。[反アフィニティ グループを有効にする] をオフにして、[完了] をクリックします。
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 や内向き VIP のようなフィールドは編集できません。競合する IP アドレスを修正するには:
既存のクラスタと競合しない IP アドレスを使用して、もう一度クラスタを作成します。
クラスタの削除が失敗し Cloud Console からクラスタを削除できない
ユーザー クラスタを削除しても、Google Cloud コンソールには表示されます。これは、ユーザー クラスタの管理クラスタとの接続が失われた場合に発生します。この問題を解決するには、Anthos On-Prem API リソースを削除するの手順を実行します。
Anthos On-Prem API リソースを削除する
Google Cloud コンソールは、Anthos On-Prem API を使用してユーザー クラスタのライフサイクルを管理します。Anthos On-Prem API で管理されるユーザー クラスタを構成することもできます。次の場合、Anthos On-Prem API リソースは削除されません。
gkectl
を使用して、Anthos On-Prem API で管理されるユーザー クラスタのノードプールを削除した。Cloud コンソールで作成されたユーザー クラスタの管理クラスタが削除された。
Anthos On-Prem API リソースが削除されていない場合でも、ユーザー クラスタは正常ではない状態で Google Cloud コンソールに表示されます。残りのリソースを削除するには、次の手順を行います。
次の環境変数を設定します。
export PROJECT_ID=FLEET_HOST_PROJECT_ID export REGION=REGION export CLUSTER_NAME=USER_CLUSTER_NAME
以下を置き換えます。
FLEET_HOST_PROJECT_ID: ユーザー クラスタが作成されたプロジェクト ID。これは、フリート ホスト プロジェクトでもあります。
REGION: クラスタのリージョン。リージョンは、コンソールでクラスタの [詳細] パネルの [ロケーション] フィールドに表示されます。
USER_CLUSTER_NAME: クラスタの名前。
ユーザー クラスタのノードプールが削除された場合でも、クラスタはフリートに登録されます。次のコマンドを実行して、ユーザー クラスタのフリート メンバーシップを削除します。
gcloud container fleet memberships delete USER_CLUSTER_NAME
管理クラスタが削除された場合でも、クラスタはフリートに登録されます。次のコマンドを実行して、管理クラスタのフリート メンバーシップを削除します。
gcloud container fleet memberships delete ADMIN_CLUSTER_NAME
詳細については、
gcloud command reference
をご覧ください。Anthos On-Prem API のメタデータを削除します。
curl -X DELETE "https://gkeonprem.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/vmwareClusters/${CLUSTER_NAME}:unenroll?force=true&allow_missing=true" \ -H "Content-Type: application/json" \ -H "X-GFE-SSL: yes" \ -H "Authorization: Bearer $(gcloud auth print-access-token)"