一般的な問題のトラブルシューティング

このページでは、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 ゲートウェイを使用していてクラスタに接続できない場合は、次の手順をお試しください。

  1. クラスタの承認されたユーザーを取得します。

    gcloud container azure clusters describe CLUSTER_NAME \
        --format 'value(authorization.admin_users)'
    

    CLUSTER_NAME をクラスタ名で置き換えます。

    出力には、クラスタに対する管理者権限があるユーザー名が含まれます。 次に例を示します。

    {'username': 'administrator@example.com'}
    
  2. Google Cloud CLI で現在認証されているユーザー名を取得します。

    gcloud config get-value account
    

    出力には、Google Cloud CLI で認証されたアカウントが含まれます。gcloud containers azure clusters describegcloud 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 execkubectl attachkubectl 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 Logginggke-connect-agent ログを確認します。

次のステップ