Я настраиваю кластер 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-адрес, и он работает только тогда, когда я нажимаю частный. Есть идеи, что здесь происходит?