解决本地 docker/minikube 没有权限拉取 AWS 的镜像

在本地的Docker上Pull AWS EC2 Container Services的镜像时,遇到如下错误:

Failed to pull image "url": image pull failed for url, this may be because there are no credentials on this request. details: (unauthorized: authentication required)

解决方案是用AWS CLI工具登录Docker

1
eval `aws ecr get-login`

然后运行docker pull即可。

如果是在 minikube 上运行而不是本地的 Docker,那要先吧 Docker CLI 连到 minikube 上。

1
eval `minikube docker-env`

然后执行刚刚的命令就可以了。

注意:如果你的 deployment.yaml 里配置了 imagePullPolicy: Always 或者 image 的版本是 latest 都会强制 K8s 在启动容器之前拉取镜像,即使镜像已经存在。