当前位置: 首页 > article >正文

深入排查K8s节点NotReady:从CNI插件未初始化到Containerd重启的完整解决方案

1. 节点NotReady的典型表现与初步诊断当你发现Kubernetes集群中某个节点突然变成NotReady状态时先别慌。这种情况我遇到过不下二十次大多数时候都能通过系统化的排查快速恢复。最典型的症状就是在执行kubectl get nodes时看到类似这样的输出NAME STATUS ROLES AGE VERSION worker-01 NotReady none 15d v1.30.3这时候第一反应应该是查看kubelet日志我习惯用journalctl来查看实时日志journalctl -u kubelet -f --no-pager在日志中你可能会看到这样的关键错误信息E0927 09:12:45.858367 53283 kubelet.go:2909] Container runtime network not ready networkReadyNetworkReadyfalse reason:NetworkPluginNotReady message:Network plugin returns error: cni plugin not initialized这个错误明确告诉我们问题出在网络插件初始化失败。根据我的经验CNI插件问题导致的节点NotReady占这类故障的70%以上。接下来我会带你一步步深入排查就像侦探破案一样抽丝剥茧。2. CNI插件的基础检查2.1 检查CNI插件Pod状态首先确认CNI插件本身的运行状态。以最常用的flannel为例kubectl get pods -n kube-flannel -o wide kubectl get daemonset -n kube-flannel如果发现Pod异常比如CrashLoopBackOff状态就需要进一步查看日志kubectl logs -n kube-flannel flannel-pod-name --previous我遇到过几次因为节点IP变化导致flannel无法启动的情况这时候需要清理旧的flannel配置ip link delete cni0 ip link delete flannel.1 rm -rf /var/lib/cni/2.2 验证CNI配置文件即使CNI Pod运行正常配置问题也会导致初始化失败。检查CNI配置目录ls -la /etc/cni/net.d/ cat /etc/cni/net.d/10-flannel.conflist重点确认配置文件是否存在且权限正确通常需要644权限配置文件内容是否完整特别是网络段配置插件二进制文件是否存在ls -la /opt/cni/bin/ ls -al /usr/lib/cni/有一次我遇到一个奇葩问题/opt/cni/bin/下的插件二进制文件竟然被误删了解决方法就是从其他正常节点拷贝过来scp roothealthy-node:/opt/cni/bin/* /opt/cni/bin/3. Containerd与CNI的交互排查3.1 检查Containerd的CNI状态当CNI配置看起来都正常但问题依旧时就该检查容器运行时了。使用crictl工具crictl info | grep -A 5 -B 5 network典型错误输出可能是lastCNILoadStatus: cni config load failed: no network config found in /etc/cni/net.d: cni plugin not initialized这里有个关键点即使/etc/cni/net.d/下有配置文件Containerd也可能读不到。我遇到过几种情况Containerd没有权限读取配置目录配置文件格式错误导致解析失败Containerd缓存了旧的错误状态3.2 Containerd服务重启的正确姿势最简单的解决方案是重启Containerdsystemctl restart containerd但要注意几个细节重启顺序很重要先containerd后kubelet重启后要等待至少30秒让服务完全初始化最好同时重启kubeletsystemctl restart kubelet在我的生产环境中曾经因为没等containerd完全启动就重启kubelet导致问题反复出现。后来我养成了习惯重启后先用systemctl status containerd确认服务状态。4. 深入问题根源与高级排查4.1 检查CNI插件加载过程如果重启大法无效就需要更深入的排查。可以通过debug模式启动kubeletjournalctl -u kubelet -f -l --no-pager -p debug在日志中搜索CNI相关条目重点关注CNI配置加载时间点插件初始化错误详情与containerd的通信状态4.2 网络命名空间检查有时候问题出在容器的网络命名空间。可以这样检查# 列出所有容器 crictl ps -a # 查看容器网络命名空间 lsns -t net # 检查特定容器的网络配置 crictl inspect container-id | grep -i network曾经有个案例是旧的网络命名空间没清理干净导致新容器无法创建网络接口。解决方法就是手动清理ip netns list | xargs -I {} ip netns delete {}4.3 内核参数检查某些情况下还需要检查内核参数sysctl -a | grep -E bridge|ip_forward确保以下参数为1net.ipv4.ip_forward1net.bridge.bridge-nf-call-iptables15. 预防措施与最佳实践根据我处理这类问题的经验预防胜于治疗。以下是一些实用建议定期检查CNI插件版本老版本插件可能有已知bug/opt/cni/bin/flannel --version配置健康检查为CNI插件DaemonSet添加livenessProbelivenessProbe: exec: command: [/bin/sh, -c, ip a show cni0] initialDelaySeconds: 30 periodSeconds: 60资源预留确保kubelet和CNI插件有足够资源resources: requests: cpu: 100m memory: 100Mi日志轮转配置防止日志占满磁盘journalctl --vacuum-size100M关键指标监控建议监控以下指标kubelet_node_status_condition{conditionReady}containerd_cni_operations_totalflannel_network_errors_total最后分享一个真实案例某次集群升级后多个节点突然NotReady排查发现是新版containerd与旧版CNI插件不兼容。解决方案是同时升级CNI插件和containerd并在变更窗口进行操作。这提醒我们任何组件升级都要考虑兼容性最好先在测试环境验证。

相关文章:

深入排查K8s节点NotReady:从CNI插件未初始化到Containerd重启的完整解决方案

1. 节点NotReady的典型表现与初步诊断 当你发现Kubernetes集群中某个节点突然变成NotReady状态时,先别慌。这种情况我遇到过不下二十次,大多数时候都能通过系统化的排查快速恢复。最典型的症状就是在执行kubectl get nodes时看到类似这样的输出&#xff…...

Jenkins通用配置实战:从安装到邮件通知的完整指南

1. Jenkins中文界面配置实战 刚装好Jenkins时满屏英文让人头疼?别担心,跟着我做这几个步骤,10分钟就能让界面变成熟悉的中文。我去年给二十多台服务器部署Jenkins时,这套方法屡试不爽。 首先需要安装两个关键插件:Loca…...

投标人,别再让“翻网站”吃掉你的时间

这份央企和政府的采购平台名单,其实是很多投标人日常的“收藏夹”——平台太多、账号太乱,每天光登录一遍就要花掉不少时间,更别说还得盯着哪个网站出了新公告。智标领航想解决的,正是这个问题:把找信息的时间和写标书…...

收藏备用!小白程序员必看:大模型与智能体实操拆解,避开坑快速上手

对于刚涉足大模型与智能体领域的小白程序员而言,很容易被“智能体”“Function call”“工具调用”这些专业术语绕得晕头转向,甚至陷入认知误区,越学越迷茫。本文完全从实操角度出发,拆解智能体的本质与真实企业应用场景&#xff…...

AIVideo在短视频创作中的应用:抖音/B站/小红书视频一键生成

AIVideo在短视频创作中的应用:抖音/B站/小红书视频一键生成 1. 短视频创作的新革命:AI视频生成平台 每天,数以百万计的内容创作者在抖音、B站、小红书等平台上传海量视频内容。传统视频制作流程需要经历文案撰写、分镜设计、拍摄剪辑、配音…...

Nanbeige 4.1-3B应用场景:用像素冒险终端做AI辅助心理疏导初探

Nanbeige 4.1-3B应用场景:用像素冒险终端做AI辅助心理疏导初探 1. 项目背景与设计理念 1.1 像素冒险终端的诞生 Nanbeige 4.1-3B像素冒险聊天终端是一款融合了复古游戏美学与现代AI技术的创新交互界面。这个项目源于一个简单却深刻的观察:传统心理咨询…...

Qwen3.5-27B性能实测报告:4090D四卡下QPS、首token延迟、显存占用数据

Qwen3.5-27B性能实测报告:4090D四卡下QPS、首token延迟、显存占用数据 1. 测试环境与配置 1.1 硬件配置 本次测试使用的硬件环境为4张RTX 4090 D 24GB显卡组成的计算集群,具体配置如下: 组件规格GPU4 x RTX 4090 D 24GBCPUAMD EPYC 7B13 …...

QGIS数据流转实战:从属性表到Excel的完整工作流

1. QGIS属性表导出Excel的完整流程 第一次用QGIS处理空间数据时,最让我头疼的就是如何把图层属性表里的数据导出来做进一步分析。后来发现这个操作其实比想象中简单得多,就像把超市购物小票转换成电子账单一样自然。下面我会用最直白的语言,带…...

灵感画廊部署教程:阿里云ECS实例一键部署Stable Diffusion XL 1.0镜像

灵感画廊部署教程:阿里云ECS实例一键部署Stable Diffusion XL 1.0镜像 你是否曾梦想拥有一个属于自己的数字艺术工作室?一个无需复杂配置,打开浏览器就能挥洒创意的空间?今天,我将带你通过阿里云ECS,一键部…...

FireRedASR Pro智能Agent核心组件:为AI智能体赋予“听觉”

FireRedASR Pro智能Agent核心组件:为AI智能体赋予“听觉” 你有没有想过,让电脑助手像真人一样,不仅能看懂你打的字,还能听懂你说的话?比如你正忙着写代码,随口说一句“帮我查一下今天北京的天气”&#x…...

结合DeOldify与3D建模软件:为黑白材质贴图智能赋予色彩

结合DeOldify与3D建模软件:为黑白材质贴图智能赋予色彩 你有没有遇到过这样的场景?在制作一个复古风格的游戏场景,或者还原某个历史时期的影视特效时,手头只有一堆老旧的黑白参考图,或者为了追求特定艺术效果&#xf…...

告别命令行!用Hexo Admin打造可视化Markdown写作后台(附安全配置指南)

告别命令行恐惧:Hexo Admin可视化写作后台全攻略 每次打开终端准备写博客时,那些闪烁的光标和需要记忆的命令是否让你望而却步?Hexo Admin的出现彻底改变了这一局面。这个轻量级插件为Hexo静态博客系统带来了类似WordPress的后台体验&#xf…...

L298N电机驱动原理与嵌入式控制实践

1. L298N电机驱动模块技术解析与工程实践L298N是意法半导体(STMicroelectronics)推出的一款双H桥直流电机驱动芯片,采用Multiwatt15封装,具备高电压、大电流驱动能力。该芯片自20世纪90年代问世以来,因其结构清晰、接口…...

USB-C线缆里的秘密:E-Marker芯片如何决定你的快充速度(附选购指南)

USB-C线缆里的秘密:E-Marker芯片如何决定你的快充速度(附选购指南) 每次给手机充电时,你是否注意到不同线缆的充电速度差异巨大?一条看似普通的USB-C线,可能隐藏着影响充电效率的核心元件——E-Marker芯片。…...

OpenBMC实战:如何通过YAML配置自定义IPMI FRU信息(附完整避坑指南)

OpenBMC实战:通过YAML定制IPMI FRU信息的工程化实践 在服务器管理领域,FRU(Field Replaceable Unit)信息如同设备的"身份证",记录了主板、CPU、内存等关键部件的生产日期、序列号、厂商数据等资产信息。当我…...

Gemma-3-12B-IT WebUI效果集:多模态扩展方案+CLIP/ViT集成路径

Gemma-3-12B-IT WebUI效果集:多模态扩展方案CLIP/ViT集成路径 1. 引言:当语言模型“睁开双眼” 想象一下,你正在和一位知识渊博的助手聊天,它能理解你的文字,回答你的问题,甚至帮你写代码。但当你问它&am…...

SG90舵机PWM控制原理与嵌入式实现

1. SG90舵机控制原理与嵌入式实现方案SG90是一种广泛应用的微型模拟舵机,因其体积小、成本低、控制简单,在教育实验、机器人关节、航模控制及小型机电系统中占据重要位置。该器件并非智能数字舵机,不支持串口或I2C总线通信,其核心…...

为什么你的正则表达式引擎需要NFA转DFA?子集法详解与性能对比

为什么你的正则表达式引擎需要NFA转DFA?子集法详解与性能对比 在构建高性能文本处理工具时,正则表达式引擎的核心竞争力往往取决于其底层自动机实现的效率。许多开发者可能已经熟悉NFA(非确定有限自动机)的概念,但真正…...

收藏备用!大模型与智能体入门详解(小白程序员必看,轻松吃透AI核心架构)

对于刚涉足AI领域的小白程序员,或是想快速打通大模型与智能体关联的开发者而言,分清两者的概念、核心特点及内在关联,是迈入AI应用开发大门的关键一步。本文摒弃晦涩术语,采用通俗解读实操案例结合的方式,详细拆解大模…...

AIGlasses OS Pro智能视觉系统Java开发集成指南:SpringBoot微服务实战

AIGlasses OS Pro智能视觉系统Java开发集成指南:SpringBoot微服务实战 最近在做一个智慧园区的项目,需要给门禁系统加上人脸识别和车辆识别的能力。团队评估了几家方案,最终选择了AIGlasses OS Pro的视觉API,主要是看中了它接口清…...

静态分析不是“扫一遍就完事”!嵌入式C工程师必须掌握的3层验证模型,含CWE-119/121漏洞检出率实测数据

第一章:嵌入式 C 语言静态代码分析工具选型指南嵌入式系统对可靠性、实时性与资源约束高度敏感,静态代码分析(Static Code Analysis, SCA)是保障 C 代码质量的关键前置环节。不同于通用软件开发,嵌入式 C 项目常面临无…...

YOLO-v8.3新手教程:免费镜像一键部署,按需GPU训练模型

YOLO-v8.3新手教程:免费镜像一键部署,按需GPU训练模型 想快速上手YOLO-v8.3进行目标检测,却被复杂的安装配置和昂贵的GPU成本劝退?本文将带你通过免费镜像一键部署YOLO-v8.3环境,并教你如何按需使用GPU资源&#xff0…...

思科Packet Tracer实战:RIP、OSPF、BGP三大路由协议配置避坑指南

思科Packet Tracer实战:RIP、OSPF、BGP三大路由协议配置避坑指南 在网络工程的学习和实践中,动态路由协议的配置是核心技能之一。作为网络工程师的"模拟沙盒",Cisco Packet Tracer为我们提供了安全、便捷的实验环境。本文将聚焦RIP…...

Qwen3.5-9B容器化部署:Dockerfile结构解析与自定义改造

Qwen3.5-9B容器化部署:Dockerfile结构解析与自定义改造 1. 项目概述与技术背景 Qwen3.5-9B作为新一代多模态大模型,在视觉-语言理解、推理能力和计算效率方面都有显著提升。容器化部署能够帮助开发者快速搭建模型服务环境,实现一键部署和灵…...

数字化驱动新能源电池:赋能未来工厂,实现高效生产

近年来,新能源行业正迎来快速发展的机遇与挑战。作为新能源核心的电池产业,如何通过数字化技术实现高效生产、优化管理、绿色低碳,成为行业关注的焦点。广域铭岛(Geega)工业互联网平台在这一领域持续发力,为…...

SBOM实战指南:如何用Black Duck自动生成软件物料清单(附避坑技巧)

SBOM实战指南:如何用Black Duck自动生成软件物料清单(附避坑技巧) 在数字化转型加速的今天,软件供应链安全已成为企业不可忽视的核心议题。作为开发者和安全工程师,我们常常面临这样的困境:明明使用了最新版…...

AI临终牧师:聆听废弃算法最后的“忏悔”

——测试工程师的算法生命终期管理指南第一章 算法墓园:代码生命的终局诊断当金融风控系统“Alpha-Sentinel”的F1值从0.92塌陷至0.71,内存占用峰值暴涨300%至3.2GB,测试仪表盘的持续飘红宣告了算法的临床死亡。在算法临终阶段(De…...

Qwen3.5-9B惊艳案例:同一模型完成商品图识别、文案生成与卖点推理全流程

Qwen3.5-9B惊艳案例:同一模型完成商品图识别、文案生成与卖点推理全流程 1. 多模态AI的突破性表现 想象一下,当你上传一张商品图片,AI不仅能准确识别图中的物品,还能自动生成吸引人的营销文案,甚至分析出产品的核心卖…...

芯片制造实践:JS如何优化百度WebUploader对国产加密芯片的大文件分片传输与秒传支持?

客户这边啊,是汽车制造行业里的大哥大,是那种数一数二的企业。他们自己有一整套非常棒的业务系统,这套系统就像他们的得力助手,每天帮他们处理各种事情。但呢,随着行业竞争越来越激烈,技术也日新月异&#…...

基于STM32的数控线性稳压电源设计与实现,具备多种功能和保护机制

基于stm32的数控线性稳压电源,恒压恒流电源资料。 极具学习和设计参考价值,已验证,资料包括源程序,原理图,pcb等设计资料! 本设计采用220V市电输入工频变压器,将220V交流电压降为24V交流电压,经过全桥整流加…...