news 2026/4/29 13:51:33

告别NotReady:手把手解决K8s v1.23集群安装后网络插件(Calico/Flannel)部署卡住问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
告别NotReady:手把手解决K8s v1.23集群安装后网络插件(Calico/Flannel)部署卡住问题

告别NotReady:K8s v1.23集群网络插件部署全攻略

当你终于完成Kubernetes v1.23集群的基础安装,却在最后一步遭遇网络插件部署失败时,那种功亏一篑的挫败感我深有体会。节点状态顽固地显示"NotReady",就像一扇即将打开的门被突然卡住。本文将带你系统排查Calico/Flannel部署失败的六大症结,并提供五种经过实战验证的解决方案。

1. 网络插件部署失败的深度诊断

在master节点执行kubectl get nodes看到NotReady状态时,先别急着重装。通过以下命令组合能快速定位问题根源:

# 检查节点详细状态 kubectl describe node <node-name> # 查看网络插件Pod日志 kubectl logs -n kube-system <pod-name> -c <container-name> # 检查网络插件Pod状态 kubectl get pods -n kube-system -o wide

常见故障模式通常呈现以下特征:

镜像拉取失败的症状:

  • Pod状态持续显示ImagePullBackOff
  • 日志中出现"failed to pull image"错误
  • 国内环境直接使用国外镜像仓库时尤为常见

网络策略冲突的表现:

  • Pod状态为Running但节点仍NotReady
  • 跨节点Pod无法互相ping通
  • 日志中出现"network plugin not ready"提示

资源配置不足的迹象:

  • Pod频繁重启或被OOMKilled
  • kubectl describe显示CPU/内存不足
  • 工作节点配置低于2核4GB时容易发生

2. 国内环境加速部署方案

2.1 使用国内镜像源替换

对于Calico部署,修改官方yaml中的镜像地址:

# 原镜像地址 image: docker.io/calico/cni:v3.26.0 # 替换为 image: registry.aliyuncs.com/google_containers/calico-cni:v3.26.0

Flannel的快速部署方案:

# 使用阿里云镜像源 curl -sSL https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml | \ sed 's/quay.io\/coreos/registry.aliyuncs.com\/google_containers/g' | \ kubectl apply -f -

2.2 离线安装包方案

当环境完全无法连接外网时,可提前下载所需组件:

  1. 在可联网机器下载资源包:

    # Calico资源包 wget https://github.com/projectcalico/calico/releases/download/v3.26.0/release-v3.26.0.tgz # Flannel资源包 wget https://github.com/flannel-io/flannel/releases/download/v0.22.0/flannel-v0.22.0-linux-amd64.tar.gz
  2. 传输到集群节点后手动加载镜像:

    docker load -i calico-node.tar docker tag local-image:tag official-image:tag

3. 配置文件调优实战

3.1 IP地址池配置

Calico的CIDR配置需要与kubeadm初始化参数一致:

# custom-resources.yaml 关键片段 spec: calicoNetwork: ipPools: - cidr: 192.168.0.0/16 natOutgoing: true

Flannel的net-conf.json配置:

{ "Network": "10.244.0.0/16", "Backend": { "Type": "vxlan" } }

3.2 资源限制调整

对于资源有限的测试环境,可降低网络插件资源需求:

# Calico容器资源限制示例 resources: requests: cpu: "100m" memory: "100Mi" limits: cpu: "500m" memory: "500Mi"

4. 高级排错技巧

当常规方法无效时,这些命令能提供更深层信息:

# 检查IPVS规则 ipvsadm -Ln # 追踪网络包路径 traceroute <目标PodIP> # 检查网络接口 ip addr show

典型问题处理流程:

  1. 确认网络插件Pod正常运行
  2. 验证节点间网络连通性
  3. 检查IP分配是否冲突
  4. 排查防火墙/安全组规则
  5. 验证内核模块加载情况

5. 替代方案与灾备措施

当主要网络插件持续失败时,可考虑以下备选方案:

方案对比表

特性CalicoFlannelCilium
网络策略支持有限支持完整支持
性能中等极高
配置复杂度中等简单复杂
资源消耗较高中等

临时恢复方案:

# 使用hostNetwork模式临时恢复 kubectl patch deployment my-app -p '{"spec":{"template":{"spec":{"hostNetwork":true}}}}'

记得在最终解决问题后移除临时方案,以确保集群网络安全隔离。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 13:44:24

《信息系统项目管理师教程(第4版)》——组织通用治理

在《信息系统项目管理师教程&#xff08;第4版&#xff09;》中&#xff0c;“组织通用治理”&#xff08;第22章&#xff09;可以说是最“务虚”但又最考验你大局观的一章。它不教你如何排进度、算成本&#xff0c;而是教你“公司高层每天都在琢磨什么”。 这章在考试中的定位…

作者头像 李华
网站建设 2026/4/29 13:35:23

别让缓存和兼容性拖后腿:TongWeb8应用性能调优与类加载冲突避坑指南

TongWeb8深度调优实战&#xff1a;破解缓存瓶颈与类加载冲突的高阶策略 当企业级应用在TongWeb8容器中运行数月后&#xff0c;许多运维团队都会遭遇相似的困境——系统响应速度逐渐降低&#xff0c;日志中频繁出现缓存不足警告&#xff0c;而那些看似随机的类加载错误更是让人…

作者头像 李华
网站建设 2026/4/29 13:34:21

大语言模型偏见检测工具BIASFREEBENCH实践指南

1. 项目背景与核心价值 在自然语言处理领域&#xff0c;大语言模型&#xff08;LLM&#xff09;的偏见问题一直是学术界和工业界关注的焦点。最近我在参与一个金融行业对话系统项目时&#xff0c;发现现有模型在性别、职业等维度存在明显的刻板印象输出。这促使我深入研究了BIA…

作者头像 李华
网站建设 2026/4/29 13:33:34

3分钟搞定批量照片水印:智能识别相机参数的专业工具指南

3分钟搞定批量照片水印&#xff1a;智能识别相机参数的专业工具指南 【免费下载链接】semi-utils 一个批量添加相机机型和拍摄参数的工具&#xff0c;后续「可能」添加其他功能。 项目地址: https://gitcode.com/gh_mirrors/se/semi-utils 你是否曾为手动给数百张摄影作…

作者头像 李华