未找到 Google 云服务帐户

未找到 Google 云服务帐户

我有一个使用 GKE 在 Google Cloud 上运行的基础设施。今天,prometheus pod 被驱逐,并且无法恢复。描述 pod 后,我发现了这个错误。

  Warning  FailedMount         2m17s (x42 over 95m)  kubelet, gke-production-default-pool-44cd6cd6-h9rw  Unable to mount volumes for pod "prometheus-6d7c45fc6-5zd5d_kube-system(86c0258f-81ed-11e9-93ac-42010af00102)": timeout expired waiting for volumes to attach or mount for pod "kube-system"/"prometheus-6d7c45fc6-5zd5d". list of unmounted volumes=[storage]. list of unattached volumes=[config storage prometheus-token-875gs]
  Warning  FailedAttachVolume  69s (x47 over 96m)    attachdetach-controller                             AttachVolume.Attach failed for volume "pvc-ff226d8b-3814-11e8-a63c-42010af001b0" : googleapi: Error 400: EXTERNAL_RESOURCE_NOT_FOUND - The resource '[email protected]' of type 'serviceAccount' was not found.

进一步调查证明,该服务账户在IAM服务中不存在。

根据谷歌文档据称,通过禁用并重新启用 api 服务可以解决问题。

问题是,这个操作很可能会删除 kubernetes 集群资源,这是我不希望发生的。

因此问题是:

  1. 还有其他方法可以解决这个问题吗? 如果有,怎么做?
  2. 这个操作真的会删除所有资源吗?

感谢大家花时间检查这个问题。

答案1

显然我可以通过以下方式解决自己的问题取消删除服务帐号。gcloud cli 不支持此操作,但 api 支持。发出的请求是curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://iam.googleapis.com/v1/projects/-/serviceAccounts/114592978558849211522:undelete"

答案2

我可以使用此 gcloud 命令恢复我的服务帐户。

gcloud beta iam service-accounts undelete account-id

例如

gcloud beta iam service-accounts undelete 118324309064251493510

要获取 accountid,请参阅本文

相关内容