У меня есть инфраструктура, работающая в облаке Google с использованием GKE. Сегодня стручки прометея выселили и не смогли восстановить. После описания стручка я обнаружил эту ошибку.
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 '469079048876-compute@developer.gserviceaccount.com' of type 'serviceAccount' was not found.
Дальнейшее расследование показало, что учетная запись службы не существует в службе IAM.
Согласно гуглу документация предположительно путем отключения и повторного включения службы api решает проблему.
Дело в том, что эта операция, скорее всего, удалит ресурсы кластера kubernetes, чего я не хочу.
Итак, вопросы:
Спасибо всем, что нашли время, чтобы задать этот вопрос.
По-видимому, я смог решить свою проблему с помощью восстановление учетная запись службы. Эта операция не поддерживается в gcloud cli, но поддерживается в API. Сделанный запрос был curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://iam.googleapis.com/v1/projects/-/serviceAccounts/114592978558849211522:undelete"