本页面介绍了如何排查 Google Kubernetes Engine (GKE) 服务账号的问题。
将默认服务账号恢复到您的 Google Cloud 项目
GKE 的默认服务账号 container-engine-robot
可能会意外地从项目中解除绑定。Kubernetes Engine Service Agent 角色 (roles/container.serviceAgent
) 是一种 Identity and Access Management (IAM) 角色,它授予服务账号管理集群资源的权限。如果从服务账号中移除此角色绑定,则默认服务账号将从项目中解除绑定,这可能会阻止您部署应用和执行其他集群操作。
如需查看服务账号是否已从项目中移除,您可以使用 Google Cloud 控制台或 Google Cloud CLI。
控制台
在 Google Cloud 控制台中,转到 IAM 和管理页面。
gcloud
运行以下命令:
gcloud projects get-iam-policy PROJECT_ID
将
PROJECT_ID
替换为您的项目 ID。
如果信息中心或该命令未针对服务账号显示 container-engine-robot
,则表示角色已解除绑定。
如需恢复 Kubernetes Engine Service Agent 角色 (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。
控制台
在 Google Cloud 控制台中,转到 IAM 和管理页面。
gcloud
- 运行以下命令:
gcloud iam service-accounts list --filter="NAME~'compute' AND disabled=true"
如果服务账号已停用,请运行以下命令以启用服务账号:
gcloud iam service-accounts enable PROJECT_ID[email protected]
将 PROJECT_ID
替换为您的项目 ID。
如需了解详情,请参阅排查节点注册问题。
错误 400/403:缺少账号的修改权限
如果服务账号已删除,您可能会看到缺少修改权限的错误。如需了解如何排查此错误,请参阅错误 400/403:缺少账号的修改权限。
后续步骤
如果您需要其他帮助,请与 Cloud Customer Care 联系。