问题描述:
kubernetes部署应用时,pod启动失败,通过kubectl describe pod查看失败原因类似下面的错误:
Failed to pull image "xxxx/oneapi-2/authtenantserver:15": rpc error: code = Unknown desc = Error response from daemon: pull access denied for xxxx/oneapi-2/authtenantserver, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
排查方法及解决思路:
1.根据错误描述,先去harbor上看要拉取的镜像是否存在,如果不存在则可能是由于镜像不存在导致的。
2.如果harbor上已经存在镜像,则在pod所在的服务器上用docker pull命令尝试看看能否拉取到本地,如果不能拉取,说明没有权限,需要执行docker login。
3.执行docker login后,再次在服务器上执行docker pull看是否可以正常拉取镜像。
4.如果本地可以正常拉取了,则在kubernetes上重新部署看看是否可以正常拉取镜像了。
5.如果kubernetes还是报上面的错误,则需要将docker login后生成的/root/.docker/config.json文件复制到/var/lib/kubelet/config.json。然后在kubernetes上重新部署即可正常拉取镜像。
注意:上面排查过程中重新部署时要确保pod部署在原来的节点上。文章来源:https://www.toymoban.com/news/detail-559151.html
说明:通过上面的过程找到拉取镜像失败的真正原因,如果是因为步鄹5导致的,那在kubernetes上重启pod,这时让pod部署到集群其他节点上,检查kubernetes集群的其他节点是否也存在同样的问题,如果存在的话,则kubernetes集群的所有节点都需要执行步鄹5。文章来源地址https://www.toymoban.com/news/detail-559151.html
到了这里,关于kubernetes部署应用时从harbor拉取镜像失败:repository does not exist or may require ‘docker login‘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!