Назад | Перейти на главную страницу

MissingAuthenticationTokenException при извлечении из ECR в EKS в частном VPC

Я настраиваю кластер EKS в частном VPC. Чтобы получить изображения из ECR, я создал конечную точку для службы ECR в моем VPC.

В целях тестирования я поместил в свой ECR образ Nginx, который имеет следующее имя общедоступного образа (согласно графическому интерфейсу ECR):

123456789012.dkr.ecr.eu-central-1.amazonaws.com/public/nginx

Поэтому вместо ссылки на DNS-имя общедоступной конечной точки ECR я указываю частную конечную точку как изображение модуля следующим образом:

vpce-asdf12345xyz4711-asdf123.api.ecr.eu-central-1.vpce.amazonaws.com/nginx:latest

Когда я пытаюсь запустить модуль с этим изображением, я получаю следующее MissingAuthenticationTokenException событие ошибки, и модуль переходит в ImagePullBackoff:

Failed to pull image "vpce-asdf12345xyz4711-asdf123.vpce.amazonaws.com/public/nginx:latest": rpc error: code = Unknown desc = Error response from daemon: error parsing HTTP 403 response body: invalid character '<' looking for beginning of value: "<MissingAuthenticationTokenException>\n  <Message>Missing Authentication Token</Message>\n</MissingAuthenticationTokenException>\n"

Мои рабочие узлы EKS имеют роль, которая включает AmazonEC2ContainerRegistryReadOnly политика.

Возможно, полезное примечание: Раньше мне удавалось успешно запускать поды с изображениями из этого ECR, используя общедоступную конечную точку ECR в имени изображения, но, похоже, это работает только случайным образом. Мое лучшее предположение состоит в том, что DNS-сервер случайным образом преобразуется в частный или общедоступный IP-адрес, и он работает только тогда, когда я нажимаю частный. Есть идеи, что здесь происходит?