TKE集群pod镜像拉取失败定位思路
一般我们在部署服务的时候会遇到一些镜像拉取失败的问题,这里简单讲述下如何定位解决这类镜像拉取失败的问题,大致的定位思路如下
常见的镜像拉取报错:
- imagePullBackoff
- imagelnspectError
- ErrImagePull
- ErrImageNeverPull
- RegistryUnavailable
- InvalidImageName
1. 节点上是否可以拉取镜像
如果pod运行拉取镜像失败,可以先确认下节点是否可以拉取镜像成功,因为pod运行也是调用节点docker拉取镜像到节点上,然后运行,如果节点拉取镜像失败,pod肯定会启动失败。
节点拉取镜像失败可以看下是拉取内网仓库还是外网镜像,如果是外网确定下节点是否能访问互联网,如果是内网看下能否登陆内网仓库地址。
TCR仓库有访问白名单,确认下节点是否在配置的仓库白名单内。
2. 仓库秘钥是否创建
节点可以拉取镜像,但是在运行pod却拉取镜像失败,这里大部分原因是pod没有配置仓库的登录秘钥。
如果是拉取ccr上的私有镜像,这里可以看下集群中命名空间的qcloudregistrykey秘钥是否有下发,没有下发则点击下发。
如果是拉取TCR或者其他的镜像仓库,这里需要自己先新建secret,这里填写secret名称,所要下发的命名空间,仓库地址,登录的账号和用户名,创建成功后再按照上一步在负载中配置创建的secret即可。
3. 仓库秘钥是否在yaml中有配置
这里我们需要在yaml中通过imagePullSecrets来指定拉取镜像的秘钥,这里可以直接修改yaml或者在控制台进行配置
4. 仓库的秘钥对应的账号密码是否正确
如果上述步骤排查都没问题,节点拉取镜像没问题,仓库秘钥也有在yaml中配置。
- 这里首先检查下对应命名空间下有没有secret,有可能ns是新建的秘钥没有下发,确认下镜像仓库的拉取秘钥在你部署服务的命名空间存在。
- 查看镜像的secret,然后解码下,检查下镜像仓库地址,用户名和密码是否正确。这里我们以qcloudregistrykey为例
[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="}}
- 如果配置没问题,那么有可能是你使用的访问仓库账号密码是临时的,TCR会提供临时的访问凭证和永久访问凭证,这里需要永久的访问凭证登录信息。
常见问题
1. mac登录ccr镜像仓库报错
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
2. 上传镜像到CCR失败报tag达到了上限
ccr上的镜像tag有限制一般是100个,如果达到了上限需要删除旧镜像tag或者提交工单帮忙提升下配额
3. 拉取某个镜像仓库的镜像没权限
需要在CAM中给子账号赋予对应镜像仓库的pull权限
4. docker拉取镜像失败报错域名解析失败
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参数
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Array - 48. Rotate Image
- string- 43. Multiply Strings
- Array - 34. Find First and Last Position of Element in Sorted Array
- Array - 31. Next Permutation
- Docker快速部署一个属于你自己的博客
- golang实现BST和AVL
- golang实现跳表(SkipList)
- 一致性哈希的golang实现
- Array - 75. Sort Colors
- Array - 309. Best Time to Buy and Sell Stock with Cooldown
- Array - 55. Jump Game
- 【技术创作101训练营】超简单的公司Git+个人Git共存方式
- css高度坍塌与清除浮动
- 无缝切换在线升级的终极探索
- promise详解