news 2026/6/10 19:42:16

Kubernetes 集群扩容与 Flannel 故障排除记录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Kubernetes 集群扩容与 Flannel 故障排除记录

. 背景
在一个单 Master 节点的 Kubernetes 集群基础上,计划添加一个新的 Worker 节点(名为 database)以进行扩容。
. 初始问题:节点加入失败
.问题1
在 database 节点上执行 kubeadm join 命令后,节点能够短暂连接到集群,但随后 kubelet 报告 TLS 证书握手错误,并最终变为 NotReady 状态。

2.2 分析与解决

通过分析journalctl -u kubelet -f输出的日志,发现kubelet在尝试与containerd通信时失败(connection refused),并且在后续步骤中请求证书时被拒绝(Unauthorized)。

这通常是由于 CNI(容器网络接口)插件未能正确启动,导致 Pod 网络不可用,进而影响了kubelet与 API Server 的通信。

经过排查后原因是swap没有被禁用,虽然之前的kubeadm join预检提到了 swap 警告,但kubelet实际启动时却将其视为致命错误,直接导致其退出。

3. 问题2:Flannel Pod 拉取镜像超时

3.1 现象

在 Master 节点上检查 Flannel 相关 Pod 的状态:

3.2 问题分析

错误明确指出kubelet尝试拉取registry.k8s.io/pause:3.6镜像时超时。在中国大陆,访问registry.k8s.io域名通常需要翻墙或使用代理,这是导致超时的根本原因。

4. 解决方案:更换镜像源并配置

修改containerd配置文件中的镜像源,后重启containerd,在 Master 节点上,删除旧的 Pod,触发重新创建:

kubectl delete pod kube-flannel-ds-7fbxv -n kube-flannel

然后查看节点状态依然在拉去旧的镜像源

kubectl describe pod kube-flannel-ds-tzsbx -n kube-flannel

继续排查后发现是config.toml中有默认配置,明确指定了containerd使用registry.k8s.io/pause:3.6作为 Pod Sandbox 的基础镜像。这个配置比kubelet命令行参数--pod-infra-container-image的优先级更高,或者直接由containerd层面处理,导致kubelet在尝试创建沙箱时总是去找registry.k8s.io/pause:3.6

[root@database ~]# cat /etc/containerd/config.toml |grep pause pause_threshold = 0.02 sandbox_image = "registry.k8s.io/pause:3.6" You have new mail in /var/spool/mail/root

修改此项配置

sudo cp /etc/containerd/config.toml /etc/containerd/config.toml.bak sudo vim /etc/containerd/config.toml sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9" #修改配置项 重启worker节点的服务 sudo systemctl restart containerd sudo systemctl restart kubelet 在Master 节点删除当前失败的 Flannel Pod kubectl delete pod kube-flannel-ds-lpzzl -n kube-flannel

等待几秒钟后,查看节点状态,都显示正常,问题解决

[root@iZ2ze6sn544ngzrbbprfmcZ ~]# kubectl get pods -n kube-flannel NAME READY STATUS RESTARTS AGE kube-flannel-ds-hghg6 1/1 Running 0 24h kube-flannel-ds-tzsbx 1/1 Running 0 37m
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 19:31:02

S32K3内存错误处理全解析:从ERM报告到FCCU收集的完整链路

S32K3内存错误处理全解析:从ERM报告到FCCU收集的完整链路在汽车电子系统的开发中,内存可靠性直接关系到功能安全等级的实现。当S32K3微控制器的Memory发生ECC错误时,错误信息会通过ERM(Error Reporting Module)的20个通…

作者头像 李华
网站建设 2026/6/10 19:16:01

模板驱动文档自动化:让重复文档生产变成零代码填空

1. 项目概述:用模板把文档生产变成“填空题”你有没有过这种体验:每周要交三份客户方案,每份结构雷同——封面、目录、痛点分析、解决方案、报价页、服务承诺——但每次都要从零新建Word、手动调格式、复制粘贴旧内容、反复检查页眉页脚是否错…

作者头像 李华
网站建设 2026/6/10 19:15:12

Sqribble文档自动化系统:模板驱动的PDF生成与结构化排版原理

1. 项目概述:当模板不再是“套壳”,而是一套可执行的文档操作系统你有没有过这种体验:手头有一篇写得不错的行业分析,想快速做成一份体面的PDF报告发给客户;或者刚整理完一套培训资料,却卡在排版上——调字…

作者头像 李华
网站建设 2026/6/10 19:12:43

Sqribble:面向结构化文档的自动化编译引擎解析

1. 项目概述:当模板不再是“套壳”,而是一套可执行的文档操作系统你有没有过这种体验:手头有一篇写得不错的行业分析,想快速变成一份拿得出手的PDF报告发给客户;或者刚整理完一套培训资料,却卡在排版上——…

作者头像 李华
网站建设 2026/6/10 19:04:16

WebSocket单机变集群:一个注解轻松搞定!

大家好,我是冰河~~ 不知道大家有没有遇到过这种场景:产品经理兴奋地跑来:“我们需要给系统加上即时通讯功能,用户都等不及了!”你满怀信心地打开技术文档,迎面而来的却是铺天盖地的配置清单:Tom…

作者头像 李华
网站建设 2026/6/10 19:04:12

第18章:PEFT 与 LoRA 实战:低成本微调大模型

1 项目背景 业务场景 算法团队接到了一个"不可能完成"的需求:用公司内部 2000 条人工标注的客服问答对,微调一个 7B 参数的开源大模型(如 Qwen-7B、ChatGLM3-6B),让它学会输出固定格式的 JSON 客服回复模板。 小陈试着用全量微调跑了一次——单卡 A100(80GB…

作者头像 李华