GKE でのサービス アカウントのトラブルシューティング


このページでは、Google Kubernetes Engine(GKE)サービス アカウントに関する問題のトラブルシューティングを行う方法について説明します。

Google Cloud プロジェクトにデフォルトのサービス アカウントを復元する

GKE のデフォルトのサービス アカウント、container-engine-robot が、プロジェクトから誤ってバインド解除されることがあります。Kubernetes Engine サービス エージェント ロールroles/container.serviceAgent)は、クラスタ リソースを管理する権限をサービス アカウントに付与する Identity and Access Management(IAM)ロールです。このロール バインディングをサービス アカウントから削除すると、デフォルト サービス アカウントはプロジェクトからバインド解除され、アプリケーションのデプロイや他のクラスタ操作の実行をユーザーができなくなる可能性があります。

サービス アカウントがプロジェクトから削除されているかどうかを確認するには、Google Cloud コンソールまたは Google Cloud CLI を使用します。

コンソール

gcloud

  • 次のコマンドを実行します。

    gcloud projects get-iam-policy PROJECT_ID
    

    PROJECT_ID は、実際のプロジェクト ID に置き換えます。

ダッシュボードまたはコマンドで、サービス アカウントの中に container-engine-robot が表示されない場合、ロールはバインドされていません。

Kubernetes Engine サービス エージェントのロールroles/container.serviceAgent)バインディングを復元するには、次のコマンドを実行します。

PROJECT_NUMBER=$(gcloud projects describe "PROJECT_ID" \
    --format 'get(projectNumber)') \
gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:service-${PROJECT_NUMBER?}@container-engine-robot.iam.gserviceaccount.com" \
    --role roles/container.serviceAgent

ロール バインディングが復元されたことを確認します。

gcloud projects get-iam-policy $PROJECT_ID

サービス アカウント名と container.serviceAgent ロールが表示されている場合、ロール バインディングが復元されています。例:

- members:
  - serviceAccount:service-1234567890@container-engine-robot.iam.gserviceaccount.com
  role: roles/container.serviceAgent

Compute Engine のデフォルトのサービス アカウントを有効にする

ノードプールに使用されるサービス アカウントは通常、Compute Engine のデフォルトのサービス アカウントです。このデフォルトのサービス アカウントが無効になっていると、ノードがクラスタに登録できないことがあります。

プロジェクトでサービス アカウントが無効になっているかどうかを確認するには、Google Cloud コンソールまたは gcloud CLI を使用します。

コンソール

gcloud

  • 次のコマンドを実行します。
gcloud iam service-accounts list  --filter="NAME~'compute' AND disabled=true"

サービス アカウントが無効になっている場合は、次のコマンドを実行してサービス アカウントを有効にします。

gcloud iam service-accounts enable PROJECT_ID-compute@developer.gserviceaccount.com

PROJECT_ID は、実際のプロジェクト ID に置き換えます。

詳細については、ノードの登録に関するトラブルシューティングをご覧ください。

エラー 400/403: Missing edit permissions on account

サービス アカウントが削除されている場合は、編集権限がないことを示すエラーが表示されることがあります。このエラーのトラブルシューティング方法については、エラー 400/403: アカウントに対する編集権限がないをご覧ください。

次のステップ

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