报错信息
Failed to pull image “redis:6.2”: rpc error: code = Unknown desc = failed to pull and unpack image “docker.io/library/redis:6.2”: failed to resolve reference “docker.io/library/redis:6.2”: pulling from host s8gkwcex.mirror.aliyuncs.com failed with status code [manifests 6.2]: 403 Forbidden
意思是说从s8gkwcex.mirror.aliyuncs.com这个镜像地址拉取redis:6.2时失败,无法解析"docker.io/library/redis:6.2",报错码是403 Forbidden,可能是没有权限访问该地址。
该错误导致了Pod的status为ImagePullBackOff
在 Kubernetes 中,ImagePullBackOff 是一种 Pod 处于非正常运行状态的错误,表明 Kubernetes 无法拉取容器镜像。通常,这种错误会导致 Pod 进入 CrashLoopBackOff 状态,持续重试镜像拉取操作。
我的redis.yaml配置很简单,就是创建一个redis的pod的资源清单。
执行kubectl create -f redis.yaml后,虽然pod/redis4 created了,但此时Pod的status为ImagePullBackOff
于是使用kubectl describe 查看具体pod报错信息时,就出现了文章开头红色字体描述的问题。
导致pod 的状态为ImagePullBackOff的原因有很多,我这里遇到的是集群网络连接问题
注意看describe描述的事件信息为:Events:Successfully assigned default/redis4 to k8s-node1
也就是说,此时k8s-node1节点已经成功被master节点调度了,那么此时,pod的创建就需要在k8s-node1节点上完成。如果此时k8s-node1节点上的镜像地址不通,那pod内的容器镜像拉取就会不成功。
我之前一直傻傻的以为,pod的创建都是在master上完成,之后才会调度到node节点上。所以我master节点上手动拉取镜像时,无论使用docker还是ctr,镜像都能拉取成功,但redis这个pod就是一直ImagePullBackOff。
因为我的k8s集群使用的是containerd的容器运行时,所以我需要在/etc/containerd/config.toml 配置镜像源。使用以下命令可以查看容器运行时使用组件是containerd。
config.toml 配置文件插件格式
vim /etc/containerd/config.toml
注意:以上配置是有对齐格式的。不然配置后会重启containerd会报错
根据报错信息 invalid plugin key URI “io.containerd.snapshotter” expect io.containerd.x.vx,说明 containerd 的配置文件中插件名称的格式不符合要求。
重启 containerd 服务,使配置生效:
检查日志
Pod终于Running了
配置完k8s-node1的镜像地址后,在重新create就Successfully了。我这个镜像拉取成功,还是需要开启VPN。
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/qdvuejs/46196.html