惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
博客园 - 【当耐特】
M
MIT News - Artificial intelligence
月光博客
月光博客
博客园_首页
博客园 - 叶小钗
T
Tailwind CSS Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
I
InfoQ
量子位
小众软件
小众软件
爱范儿
爱范儿
The GitHub Blog
The GitHub Blog
IT之家
IT之家
Jina AI
Jina AI
阮一峰的网络日志
阮一峰的网络日志
G
Google Developers Blog
WordPress大学
WordPress大学
人人都是产品经理
人人都是产品经理
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks
云风的 BLOG
云风的 BLOG
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

博客园 - fengjian1585

麒麟linx v10 sp3 cgroup v1 变更为cgroup v2 k8s Gateway API 详解 linux 挂载点覆盖清理原数据 coze 入门学习 手机安装 openclaw 关闭ingress 8443 端口 tomcat 设置 catalina.out 按天切割 Harbor 启用 Trivy 禁用 MinIO 的 Web Console 重定向功能 堆设置了8G,java进程却占用了12G内存 k8s优化选项 Kubernetes Cilium网络组件和CoreDNS配置 mkfs对磁盘设置标签 K8S的CoreDns配置文件添加域名解析 nginx代理两套k8s ingress 不同域名 pip 搭建源 使用 kubectl debug 创建临时调试容器 openvpn server证书过期处理 - fengjian1585 Harbor Swagger接口泄露漏洞处理 "too many open files" 文件句柄 Kafka 常见故障及解决方案 华为昇腾 910B GPU Nginx与Upstream之间产生大量TIME_WAIT连接的解决办法 debian libc.musl-x86_64.so.1 => not found
pod启动后一直containerCreating状态解决
fengjian1585 · 2025-09-26 · via 博客园 - fengjian1585

更新容器镜像的时候,经常遇到遇到pod一直卡住在containerCreating状态,检查该pod的事件信息,

显示pod一直在pulling镜像,即pod的创建阻塞在拉取镜像到节点的过程中。

image

出现上述问题的pod,在uat测试环境和prod生产环境2个集群都有出现。

检查pod有关事件,发现该pod从调度成功到报错ErrImagePull,中间有2个多小时,且事件显示**Failed to pull image xxx,pull QPS exceed**

分析pull QPS exceed代码,判断kubelet默认串行拉取镜像的(现在的默认策略),

串行也会走到 pull QPS exceeded 这个报错,也就是只有可能有其它镜像拉取的时候卡住了,才导致这么慢的。

image

即kubelet拉取镜像是串行的,上一个拉取任务未结束不会继续下一个,目前怀疑如下可能:

1、拉取镜像慢,即可能网络带宽很慢,造成长时间阻塞。

2、有任务阻塞了拉取队列,造成新建的pod的拉取任务阻塞在队列。

3、containerd自身卡在了拉取状态而阻塞队列,即pod的镜像拉取任务其实已经开始运行,但是未知原因,造成拉取阻塞。

重启containerd 后,队列后的请求马上就全部失败清空了

image

解决办法
总结调查过程,故障原因为上游镜像仓库异常,结合kubelet默认串行拉取镜像的策略综合导致。且kubelet拉取任务是同步任务,即拉取任务会一直等待镜像仓库返回,否则会一直阻塞在队列上。在上游镜像仓库异常无返回时,会造成镜像拉取的阻塞(客户使用了2个镜像源地址,一个异常的镜像源地址阻塞了kubelet的镜像拉取队列,造成正常的镜像源地址的镜像也无法pull了)。解决办法是优先保证上游镜像仓库的稳定,第二是修改kublet拉取策略为并行缓解。并行只是缓解了在使用了多个上游镜像仓库源时,一个镜像仓库源异常不会造成拉取其他镜像仓库源阻塞。在pod全部使用一个镜像仓库源且该源异常时,并行拉取反而会额外增加系统负载。

修改kubelet拉取镜像为并行方式
编辑kubelet配置文件,增加serializeImagePulls: false配置

image

参考:https://mp.weixin.qq.com/s/XZ7lCNNNGmkxek41sMS6IA