新闻详情

新闻详情

首页 / 资讯中心 / 详情

Calico v3.25.0离线包制作与内网K8s集群部署指南

发布时间:2026/9/29 16:48:21来源:尧图网络
Calico v3.25.0离线包制作与内网K8s集群部署指南
简介这份资源是面向 Kubernetes 运维与集群管理人员的 Calico v3.25.0 离线安装包专为解决内网、隔离环境或网络受限场景下无法在线拉取镜像的部署难题。压缩包共 3 个文件约 187.24MB包含 1 个 tar 镜像包、1 个 yaml 部署清单和 1 个 txt 说明文档tar 包封装了 Felix、BIRD、Typha 等 Calico 核心组件镜像yaml 提供集群网络与策略配置模板txt 则给出离线安装的步骤指引。借助这套材料读者无需连接外部网络即可完成 Calico 网络插件的部署快速搭建集群网络通讯与网络策略管理能力同时可对照文档理解各组件职责与配置要点降低离线环境下的排错门槛。目前已有 453 人学习下载适合需要在内网环境中落地 Calico 的运维人员参考使用。1. calico-image-v3.25.0离线包内网 K8s 集群怎么把 CNI 镜像一次备齐机房里有一套完全隔离的 Kubernetes 集群kubelet 起来了节点也 Ready 了结果 Pod 全部卡在 ContainerCreatingkubectl describe pod一看事件里写着拉取calico/node、calico/cni、calico/kube-controllers这几个镜像失败。这就是 calico-image-v3.25.0 离线包要解决的事把 Calico v3.25.0 这一版所需的全部容器镜像提前在能联网的机器上拉下来、打成 tar 包再搬到内网导入到每个节点的容器运行时里。它适合运维、交付、信创环境实施的同学尤其是那些节点不能出网、但又必须跑 Calico 做 Pod 网络的场景。下面按「镜像清单怎么定 → 离线包怎么做 → 内网怎么导 → 怎么验证 → 坑在哪」的顺序讲清楚参数和命令都能直接抄。2. 先搞清楚 Calico v3.25.0 到底要哪几个镜像2.1 从 manifest 反推镜像清单而不是凭记忆很多人做离线包翻车第一步就错了凭印象只拉calico/node结果部署时发现还缺calico/cni和calico/kube-controllers。正确做法是从官方 release 的 manifest 文件里把镜像名抠出来。Calico 的部署清单通常是一个calico.yaml或tigera-operator.yaml里面image:字段就是权威清单。常见做法是先把 manifest 下载到联网机器上然后用 grep 提取# 下载 v3.25.0 的 manifest以 calico.yaml 为例 curl -O https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml # 提取所有 image 字段去重排序 grep -E image:\s calico.yaml | awk {print $2} | tr -d | sort -u这段命令的逻辑很直白grep抓出所有含image:的行awk取第二个字段也就是镜像地址tr -d 去掉可能存在的引号最后sort -u去重。跑完你会看到类似docker.io/calico/node:v3.25.0、docker.io/calico/cni:v3.25.0、docker.io/calico/kube-controllers:v3.25.0这样的输出。注意 v3.25.0 这个 tag 必须和你的 manifest 版本严格一致混用 v3.24 的镜像会出现 CRD 字段不匹配Pod 起不来还报一堆看不懂的 schema 错误。2.2 三个核心镜像各自干什么缺一个都不行calico/cni是装在每个节点上的 CNI 插件负责给 Pod 分配 IP、配置 veth pair它由 DaemonSet 以 initContainer 形式跑装完就退出。calico/node是常驻的 Felix BIRD 进程负责路由下发、网络策略执行是真正让 Pod 能通的核心。calico/kube-controllers是单副本的控制器同步 K8s 的 NetworkPolicy、IPPool 等资源到 Calico 的数据存储。镜像作用部署形态是否必须calico/cni节点 CNI 插件安装DaemonSet initContainer必须calico/node路由与策略执行DaemonSet 主容器必须calico/kube-controllers资源同步控制器Deployment 单副本必须calico/typha大规模集群的 datastore 缓存Deployment节点数 50 建议如果你的集群节点数超过 50manifest 里还会带calico/typha这个镜像也别忘了。判断方法很简单grep 出来的清单里有几个就备几个不要自己删减。参数上唯一要盯的是 tagv3.25.0 全系列镜像 tag 都是v3.25.0没有3.25.0这种不带 v 的写法写错了 docker pull 直接报 manifest unknown。3. 在联网机器上把镜像打成离线 tar 包3.1 用 docker save 逐个导出别用 export镜像导出有两个命令容易混docker save保留镜像的完整层和元数据docker export只导出容器文件系统、丢掉镜像历史。离线包必须用save。先把三个镜像拉下来# 拉取 v3.25.0 全部镜像 docker pull docker.io/calico/node:v3.25.0 docker pull docker.io/calico/cni:v3.25.0 docker pull docker.io/calico/kube-controllers:v3.25.0 # 逐个 save 成 tar文件名带版本号方便追溯 docker save -o calico-node-v3.25.0.tar docker.io/calico/node:v3.25.0 docker save -o calico-cni-v3.25.0.tar docker.io/calico/cni:v3.25.0 docker save -o calico-kube-controllers-v3.25.0.tar docker.io/calico/kube-controllers:v3.25.0-o指定输出文件后面跟镜像全名。这里建议一个镜像一个 tar而不是三个塞一个包。原因是内网导入时如果某个镜像损坏单独重传一个几百 MB 的文件比重传一个 1GB 的大包省事得多。calico/node大概 200MB 上下calico/cni100MB 左右kube-controllers几十 MB三个加起来通常不超过 500MBU 盘就能带走。3.2 校验完整性别等搬到机房才发现包坏了tar 包在拷贝过程中损坏是血泪经验里最常见的一类问题尤其是用 U 盘或移动硬盘跨机器搬。导出后立刻算校验和# 生成 sha256 校验文件 sha256sum calico-*.tar calico-v3.25.0.sha256 # 拷贝到内网后导入前先校验 sha256sum -c calico-v3.25.0.sha256sha256sum -c会逐行比对文件里的哈希值和实际文件输出OK才算完整。如果显示FAILED说明传输过程出了问题别抱侥幸心理去导入导进去的镜像层可能是残缺的运行时才报错更难查。这一步花不了两分钟但能省掉在机房里对着ImagePullBackOff抓头的半小时。提示如果内网节点用的是 containerd 而不是 docker导出的 tar 格式是通用的 OCI 兼容格式containerd 的ctr命令可以直接导入不需要额外转换。4. 内网节点导入镜像并让 kubelet 认到4.1 docker 运行时用 docker loadcontainerd 用 ctr导入命令取决于节点用的容器运行时。先确认# 看节点用的是 docker 还是 containerd kubectl get nodes -o wide # 输出里 CONTAINER-RUNTIME 列会写 docker:// 或 containerd://如果是 docker直接 loaddocker load -i calico-node-v3.25.0.tar docker load -i calico-cni-v3.25.0.tar docker load -i calico-kube-controllers-v3.25.0.tar如果是 containerd用ctr注意要指定 namespacek8s 用的 namespace 是k8s.ioctr -n k8s.io images import calico-node-v3.25.0.tar ctr -n k8s.io images import calico-cni-v3.25.0.tar ctr -n k8s.io images import calico-kube-controllers-v3.25.0.tar-n k8s.io这个参数是新手最容易漏的。不指定 namespacectr默认导到default命名空间kubelet 在k8s.io里找不到镜像照样去外网拉然后失败。导入完用ctr -n k8s.io images ls | grep calico确认能看到三个镜像。4.2 每个节点都要导或者推到内网 registryCalico 的 DaemonSet 会在每个节点上跑所以每个节点本地都得有镜像。节点少三五个就逐个 scp 加导入节点多就搭一个内网 registry把镜像 push 上去然后改 manifest 里的 image 地址指向内网 registry。# 内网 registry 方案先打 tag 再 push docker tag docker.io/calico/node:v3.25.0 registry.internal:5000/calico/node:v3.25.0 docker push registry.internal:5000/calico/node:v3.25.0push 完记得把calico.yaml里所有docker.io/calico/替换成registry.internal:5000/calico/用sed批量改sed -i s|docker.io/calico/|registry.internal:5000/calico/|g calico.yaml改完再kubectl apply -f calico.yaml。这一步的关键是 registry 地址必须是所有节点都能解析和访问的如果 registry 用了自签证书还得在每个节点的 containerd 配置里加insecure_registries或者把 CA 证书放到/etc/containerd/certs.d/下否则拉取时报 x509 证书错误。5. 离线部署 Calico 的避坑与排查清单5.1 镜像导入了但 Pod 还是 ImagePullBackOff现象ctr images ls明明能看到 calico/node:v3.25.0但 Pod 事件还是Failed to pull image。原因通常是镜像 tag 和 manifest 里写的不完全一致比如 manifest 写的是docker.io/calico/node:v3.25.0而你导入的镜像名被 containerd 规范化成了docker.io/calico/node:v3.25.0之外的形态或者 manifest 里带了个sha256:摘要。解决办法是ctr -n k8s.io images ls看镜像的完整 REPOSITORY 和 TAG和 manifest 里的image:字段逐字符比对包括docker.io前缀有没有。5.2 calico-node 起来了但 Pod 之间不通现象calico-nodeDaemonSet 全部 Running但新建的 Pod 互相 ping 不通跨节点更不通。原因多半是 IPIP 或 VXLAN 的网卡没起来或者节点间防火墙挡了协议号。Calico 默认用 IPIP 模式需要内核加载ipip模块且节点间放通 IP 协议号 4IPIP或 47GRE。解决lsmod | grep ipip确认模块加载没有就modprobe ipip防火墙侧放通对应协议或者改用 VXLAN 模式协议号 UDP 4789。5.3 kube-controllers 报 datastore 连接失败现象calico-kube-controllers反复重启日志里Failed to connect to datastore。原因通常是它连的 datastore 类型和实际不符。v3.25.0 默认用 K8s API 作为 datastoreKDD 模式如果你的 manifest 里还留着 etcd 的配置就会连不上。解决确认calico.yaml里DATASTORE_TYPE环境变量是kubernetes并且没有多余的ETCD_ENDPOINTS配置。5.4 节点重启后镜像没了现象节点重启之前docker load进去的镜像消失Pod 又开始拉取失败。原因是有些环境把 docker 的存储目录挂在了 tmpfs 或者每次重启会重置的盘上。解决检查/var/lib/docker或/var/lib/containerd是不是持久化目录df -h看挂载点。如果是临时盘得把存储目录迁到持久盘或者干脆用内网 registry 方案让节点重启后从 registry 拉。5.5 版本混用导致 CRD 冲突现象集群里之前装过 v3.24 的 Calico直接 apply v3.25.0 的 manifest报 CRD 已存在且字段不兼容。原因Calico 的 CRD 跨版本有字段增删直接覆盖会冲突。解决先kubectl delete -f旧版 manifest注意这会短暂断网或者用kubectl apply --server-side强制更新再不行就手动kubectl replace相关 CRD。生产环境务必先在测试集群验证升级路径。6. 把离线包做成可复用资产的两个技巧第一个技巧是给离线包加一个manifest.txt记录这一版包含哪些镜像、tag、sha256、导出时间。下次做 v3.26.0 的包时直接 diff 两个 manifest就知道镜像清单变了没有不用重新 grep 一遍。这个习惯我坚持了两年交接给同事时对方一眼就能看懂包里有什么。第二个技巧是用skopeo替代docker save。skopeo copy可以在不启动 docker daemon 的情况下把镜像从 registry 直接拷成 tar适合在 CI 流水线里批量做包# 用 skopeo 直接导出无需 docker daemon skopeo copy docker://docker.io/calico/node:v3.25.0 docker-archive:calico-node-v3.25.0.tar:docker.io/calico/node:v3.25.0冒号后面那段docker-archive:文件:镜像名的写法是 skopeo 的固定格式镜像名要写全否则导入后 tag 会丢。我一般会在流水线里跑一个循环把 grep 出来的镜像清单逐个 skopeo copy最后统一算 sha256 打包。这样每次 Calico 发新版改一个版本号变量就能重新出包比手动 docker pull 靠谱得多。验证离线包是否真的可用最直接的办法是找一台干净的、断网的测试机把包导进去apply manifest看三个组件是否全部 Running再起两个测试 Pod 互相 ping。这一步别省我吃过亏有一次包里的 kube-controllers 镜像层缺了一块导入时不报错跑起来才崩排查了半天才发现是导出时磁盘满了导致 tar 截断。从那以后我每次出包都先df -h看一眼磁盘余量再算 sha256两个动作加起来不到一分钟但能挡掉大部分低级翻车。希望帮到你。本文还有配套的精品资源点击获取
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Harness Engineering实战:AI Agent工程化治理的六大核心模块 2026/9/29 17:48:03

Harness Engineering实战:AI Agent工程化治理的六大核心模块

1. Harness Engineering到底是什么:AI"裸奔"干了三个月,我悟了先交代一个背景。去年下半年我开始认真用AI Agent做编程和测试开发,最开始的状态非常简单粗暴:把需求贴进对话框,让AI直接生成代码,…

阅读更多 →
迪拜数字金融如何破解华人外贸收款难题 2026/9/29 17:48:02

迪拜数字金融如何破解华人外贸收款难题

1. 为什么迪拜正在成为华人外贸收款的新选项这几年做中东市场的朋友应该都有同一个感受:单子越来越多了,但钱越来越难收了。尤其是从传统电汇切换到数字金融渠道的过程中,很多人卡在收款环节上,明明货已经出了,提单也寄…

阅读更多 →
FPGA四大顶会趋势解读:从架构演进到工程选型实战指南 2026/9/29 17:48:02

FPGA四大顶会趋势解读:从架构演进到工程选型实战指南

FPGA这个圈子有个很有意思的现象:做算法的人觉得它是硬件,做硬件的人觉得它是软件,而真正把它用明白的人,往往两边都不站,只盯着一个东西—— 这个逻辑到底该放在哪个层级的芯片上跑,才能既满足时序又控住…

阅读更多 →
10人共用一台SolidWorks工作站:多用户远程与虚拟化部署实战 2026/9/29 17:48:01

10人共用一台SolidWorks工作站:多用户远程与虚拟化部署实战

这个需求我第一次听的时候愣了一下,后来想想其实特别现实。很多研发团队里,真正天天做大装配体的主力就那么两三个人,其余同事大部分时间在做零件建模、出工程图、做方案评审,甚至有相当一部分时间在看模型、量尺寸、导格式。公司…

阅读更多 →
继续教育学生降AI率实操指南:九大工具与组合策略 2026/9/29 17:47:36

继续教育学生降AI率实操指南:九大工具与组合策略

1. 为什么继续教育学生的AI痕迹格外扎眼先说个扎心的事实:现在高校和继续教育学院用来查AI率的系统,早就不是当年那套只比对数据库重复率的玩意儿了。像Turnitin的AI检测、知网的AIGC检测、以及各种基于Perplexity(困惑度)算法的检…

阅读更多 →
计及N-k安全约束的含光热电站电力系统优化调度Matlab实现 2026/9/29 17:47:30

计及N-k安全约束的含光热电站电力系统优化调度Matlab实现

做电力系统调度的朋友应该都有体会:论文里把模型写清楚是一回事,真要在Matlab里把代码跑起来、把结果调合理,完全是另一回事。尤其带安全约束的优化调度,约束一多,矩阵动不动就几百上千行,稍不注意就出现“…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉