У меня есть кластер Google Kubernetes Engine, который до недавнего времени с удовольствием извлекал частные образы контейнеров из корзины Google Container Registry. Я ничего не менял, но теперь, когда я обновляю свои развертывания Kubernetes, он не может запускать новые поды, и я получаю следующие события:
Normal Pulling 14s kubelet, <node-id> pulling image "gcr.io/cloudsql-docker/gce-proxy:latest"
Normal Pulling 14s kubelet, <node-id> pulling image "gcr.io/<project-id>/backend:62d634e"
Warning Failed 14s kubelet, <node-id> Failed to pull image "gcr.io/<project-id>/backend:62d634e": rpc error: code = Unknown desc = unauthorized: authentication required
Warning Failed 14s kubelet, <node-id> Error: ErrImagePull
Normal Pulled 13s kubelet, <node-id> Successfully pulled image "gcr.io/cloudsql-docker/gce-proxy:latest"
Normal Created 13s kubelet, <node-id> Created container
Normal Started 13s kubelet, <node-id> Started container
Normal BackOff 11s (x2 over 12s) kubelet, <node-id> Back-off pulling image "gcr.io/<project-id>/backend:62d634e"
Warning Failed 11s (x2 over 12s) kubelet, <node-id> Error: ImagePullBackOff
Я проверил следующие вещи, которые кажутся правильными:
- Контейнеры и их теги действительно существуют и верны.
- Пул узлов / экземпляры виртуальных машин для кластера GKE имеют разрешение
storage-ro
- Сегмент реестра контейнеров Google и кластер GKE находятся в одном проекте.
Я также пробовал отключить и снова включить службы container.googleapis.com и containerregistry.googleapis.com, но это не помогло.
Документация Google для реестра контейнеров гласит:
Кластеры Kubernetes Engine автоматически настраиваются с доступом для извлечения частных образов из реестра контейнеров в том же проекте. Вам не нужно выполнять дополнительные шаги для настройки аутентификации, если реестр и кластер находятся в одном облачном проекте.
Но похоже, что это не так.
Может ли кто-нибудь пролить дополнительный свет на то, что может происходить? Или дополнительные шаги, чтобы попробовать?