一、问题描述:
在维护paas云平台的时候有一个服务触发重启的时候有存在拉去镜像报错,报错内容如下:
Error response from daemon: pull access denied for dockerhub.jxstjh.com/iot-platform/iot-platform-mobile, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
二、问题分析:
1、镜像版本分析:
看到报错之后,第一想法是去查该镜像是否存在,进入到harbor镜像库去查看,查看结构如下:
根据结果判断是镜像是存在,没有问题。
2、宿主机拉去镜像分析:
第二再次登入到对应的宿主机上去执行docker pull命令拉去一下镜像是否正常。
执行之后发现也是报错如下:
Error response from daemon: pull access denied for dockerhub.jxstjh.com/iot-platform/iot-platform-mobile, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
3、secret组件配置分析:
根据上述的排查发现是pod去验证harbor到账号密码存在问题。
注:
负责维护的paas云平台验证harbor是通过secret组件实现的。
所以需要检查一下pod对应的deploymant控制器的imagePullSecrets参数配置, 同时对比一下kubectl get secret -n xxxx查询的列表是否一致的。
deploymant控制器的yaml配置查询内容如下:
kubectl get secret查询的结果:(这里有先切换到指定的namespace下)
4、分析结果:
是imagePullSecrets参数配置存在问题导致的,修改该配置为正确的即可;
三、问题处理;
修改deploymant控制器yaml配置里的imagePullSecrets参数值为kubectl get secret -n xxx查询到的内容。
结果如下:
重启一下pod容器即可;
四、总结:
这个是在维护kubernetes paas云平台时遇见的镜像拉去失败的问题分析过程,希望可以帮助到大家。