一般的な問題のトラブルシューティング
このページでは、GKE on Azure に関する一般的な問題を解決する方法について説明します。
さらにサポートを必要とされる場合は、Cloud カスタマーケアにお問い合わせください。一般的なエラー メッセージ
以降のセクションでは、一般的なエラー メッセージの原因と解決策について説明します。
サーバーにリソースがない
クラスタで実行中のノードプールがない場合、または Connect ゲートウェイがノードプールに接続できない場合、error: the server doesn't have a resource type "services"
などのエラーが発生することがあります。ノードプールのステータスを確認するには、次のコマンドを実行します。
gcloud container azure node-pools list \
--cluster-name CLUSTER_NAME \
--location LOCATION
以下を置き換えます。
CLUSTER_NAME
: クラスタの名前LOCATION
: クラスタを管理する Google Cloud のロケーション
出力には、クラスタのノードプールのステータスが含まれます。ノードプールが表示されない場合は、ノードプールを作成します。
禁止ユーザー
お使いのユーザー名にクラスタに対する管理者アクセス権がない場合は、次のエラーが発生します。
Error from server (Forbidden): users "administrator@example.com" is forbidden:
User "system:serviceaccount:gke-connect:connect-agent-sa" cannot impersonate
resource "users" in API group "" at the cluster scope
追加のユーザーを構成するには、クラスタの作成時に --admin-users
フラグを渡します。
Connect ゲートウェイを使用していてクラスタに接続できない場合は、次の手順をお試しください。
クラスタの承認されたユーザーを取得します。
gcloud container azure clusters describe CLUSTER_NAME \ --format 'value(authorization.admin_users)'
CLUSTER_NAME
をクラスタ名で置き換えます。出力には、クラスタに対する管理者権限があるユーザー名が含まれます。 次に例を示します。
{'username': 'administrator@example.com'}
Google Cloud CLI で現在認証されているユーザー名を取得します。
gcloud config get-value account
出力には、Google Cloud CLI で認証されたアカウントが含まれます。
gcloud containers azure clusters describe
とgcloud config get-value account
の出力が一致しない場合は、gcloud auth login
を実行し、クラスタに対する管理者権限を持つユーザーとして認証を行います。
kubectl コマンドに関する問題
次のセクションでは、kubectl
コマンドが応答しない、または失敗する問題を解決する方法について説明します。
kubectl コマンドが応答しない
クラスタが 1.25 より前の Kubernetes バージョンを実行していて、kubectl
コマンドが応答しない、またはタイムアウトする場合、最も一般的な理由は、ノードプールがまだ作成されていないことです。デフォルトで GKE on Azure は、インターネットに接続可能なエンドポイントとして Connect ゲートウェイを使用する kubeconfig
ファイルを生成します。これが機能するには、クラスタのノードプールで gke-connect-agent
Deployment が実行されている必要があります。
詳細な診断情報を確認するには、次のコマンドを実行します。
kubectl cluster-info -v=9
動作しているノードプールがない場合、connectgateway.googleapis.com
へのリクエストは 404 cannot find active connections for cluster
エラーで失敗します。
Kubernetes バージョン 1.25 以降のクラスタでは、gke-connect-agent
がコントロール プレーンで実行され、ノードプールは必要ありません。kubectl
コマンドが応答しない場合は、Cloud Logging でコントロール プレーン コンポーネントのログを確認します。
kubectl exec、attach、port-forward コマンドが失敗する
Connect ゲートウェイを使用しているときに、kubectl exec
、kubectl attach
、kubectl port-forward
コマンドがメッセージ「error: unable to upgrade connection
」で失敗することがあります。これは、Connect ゲートウェイを Kubernetes API Server エンドポイントとして使用する場合の制限事項です。
この問題を回避するには、kubeconfig
を使用してクラスタのプライベート エンドポイントを指定します。プライベート エンドポイントを介してクラスタにアクセスする手順については、kubectl 用のクラスタ アクセスを構成するをご覧ください。
kubectl の一般的なトラブルシューティング
Connect ゲートウェイを使用する場合:
Google Cloud プロジェクトで Connect ゲートウェイが有効になっていることを確認します。
gcloud services enable connectgateway.googleapis.com
Kubernetes バージョン 1.25 より前のクラスタの場合は、少なくとも 1 つの Linux ノードプールが実行され、
gke-connect-agent
が実行されていることを確認します。詳細については、クラスタ接続のトラブルシューティングをご覧ください。Kubernetes バージョン 1.25 以降のクラスタの場合は、Cloud Logging で
gke-connect-agent
ログを確認します。
次のステップ
- さらにサポートを必要とされる場合は、Cloud カスタマーケアにお問い合わせください。