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

推荐订阅源

C
Check Point Blog
美团技术团队
Jina AI
Jina AI
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
V
Visual Studio Blog
Google DeepMind News
Google DeepMind News
Hugging Face - Blog
Hugging Face - Blog
云风的 BLOG
云风的 BLOG
有赞技术团队
有赞技术团队
T
The Blog of Author Tim Ferriss
WordPress大学
WordPress大学
月光博客
月光博客
宝玉的分享
宝玉的分享
小众软件
小众软件
MongoDB | Blog
MongoDB | Blog
Apple Machine Learning Research
Apple Machine Learning Research
A
About on SuperTechFans
J
Java Code Geeks
博客园_首页
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
N
Netflix TechBlog - Medium
Vercel News
Vercel News
博客园 - 聂微东

博客园 - 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