一般我们在部署服务的时候会遇到一些镜像拉取失败的问题,这里简单讲述下如何定位解决这类镜像拉取失败的问题,大致的定位思路如下
常见的镜像拉取报错:
如果pod运行拉取镜像失败,可以先确认下节点是否可以拉取镜像成功,因为pod运行也是调用节点docker拉取镜像到节点上,然后运行,如果节点拉取镜像失败,pod肯定会启动失败。
节点拉取镜像失败可以看下是拉取内网仓库还是外网镜像,如果是外网确定下节点是否能访问互联网,如果是内网看下能否登陆内网仓库地址。
TCR仓库有访问白名单,确认下节点是否在配置的仓库白名单内。
节点可以拉取镜像,但是在运行pod却拉取镜像失败,这里大部分原因是pod没有配置仓库的登录秘钥。
如果是拉取ccr上的私有镜像,这里可以看下集群中命名空间的qcloudregistrykey秘钥是否有下发,没有下发则点击下发。
如果是拉取TCR或者其他的镜像仓库,这里需要自己先新建secret,这里填写secret名称,所要下发的命名空间,仓库地址,登录的账号和用户名,创建成功后再按照上一步在负载中配置创建的secret即可。
这里我们需要在yaml中通过imagePullSecrets来指定拉取镜像的秘钥,这里可以直接修改yaml或者在控制台进行配置
如果上述步骤排查都没问题,节点拉取镜像没问题,仓库秘钥也有在yaml中配置。
[root@VM_1_4_centos ~]# kubectl get secret -n default qcloudregistrykey -o yaml
apiVersion: v1
data:
.dockercfg: eyJjY3IuY2NzLnRlbmNlbnR5dW4uY29tjoie0FwcGxpY2F0aW9uVG9rZW46Nzg3Yjg2NDlkMjI4MDc2ZGNhNmVjYmE0NDcxNWNjNWZ9IiwiZW1haWwiOiIyMTU5OTczNDE3QHFxLmNvbSIsImF1dGgiOiJNakUxT1RrM016UXhOenA3UVhCd2JHbGpZWFJwYjI1VWIydGxiam8zT0RkaU9EWTBPV1F5TWpnd056WmtZMkUyWldOaVlUUTBOekUxWTJNMVpuMD0ifX0=
kind: Secret
metadata:
creationTimestamp: "2020-06-02T03:22:49Z"
labels:
qcloud-app: qcloudregistrykey
name: qcloudregistrykey
namespace: default
resourceVersion: "8573245592"
selfLink: /api/v1/namespaces/default/secrets/qcloudregistrykey
uid: 55de0f5d-a480-11ea-8fe7-0a5ffefb2e9f
type: kubernetes.io/dockercfg
[root@VM_1_4_centos ~]# echo "eyJjY3IuY2NzLnRlJuYW1lIjoiMjE1OTk3MzQxNyIsInBhc3N3b3JkIjoie0FwcGxpY2F0aW9uVG9rZW46Nzg3Yjg2NDlkMjI4MDc2ZGNhNmVjYmE0NDcxNWNjNWZ9IiwiZW1haWwiOiIyMTU5OTczNDE3QHFxLmNvbSIsImF1dGgiOiJNakUxT1RrM016UXhOenA3UVhCd2JHbGpZWFJwYjI1VWIydGxiam8zT0RkaU9EWTBPV1F5TWpnd056WmtZMkUyWldOaVlUUTBOekUxWTJNMVpuMD0ifX0="
| base64 -d
{"ccr.ccs.tencentyun.com":{"username":"2597","password":"{ApplicationToken:787b8649d228076dca6ecba44715cc5f}","email":"21417@qq.com","auth":"MjE1OTk3MzQxNzp7QXBwbGljYXRpb25Ub2tlbE2ZWNiYTQ0NzE1Y2M1Zn0="}}
sudo docker login --username=xxxx ccr.ccs.tencentyun.com
Password:
Sorry, try again.
Password:
Sorry, try again.
Password:
sudo: 3 incorrect password attempts
解决方案:客户用了sudo了 所以显示的Password是要输入你的系统密码。。。 输入之后 还会显示Password然后再输入仓库密码,这边登录命令去掉sudo
ccr上的镜像tag有限制一般是100个,如果达到了上限需要删除旧镜像tag或者提交工单帮忙提升下配额
需要在CAM中给子账号赋予对应镜像仓库的pull权限
Failed to pull image "ccr.ccs.tencentyun.com/mtp-light/light-web:light_base_container": rpc error: code = Unknown desc = Error response from daemon: Get https://ccr.ccs.tencentyun.com/v2/: dial tcp: lookup ccr.ccs.tencentyun.com on 183.60.82.98:53: write udp 10.155.0.6:38639->183.60.82.98:53: write: operation not permitted Failed to pull image "ccr.ccs.tencentyun.com/mtp-light/light-web:light_base_container": rpc error: code = Unknown desc = Error response from daemon: Get https://ccr.ccs.tencentyun.com/v2/: dial tcp: lookup ccr.ccs.tencentyun.com on 183.60.82.98:53: no such host
解析域名发现报错
查看message日志
调整conntrack参数
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。