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

K8s 部署 calico 网络插件时拉取不到镜像怎么办?

遇到 Calico 镜像拉取失败,最稳妥的办法是修改部署清单中的镜像地址为国内可访问的仓库,或者在容器运行时层面配置镜像加速,具体取决于你使用的是 Docker 还是 Containerd 以及能否修改 YAML 文件。

先说结论:优先检查容器运行时配置,若无效则直接替换 YAML 中的镜像地址。

  • 适合:Kubernetes 集群初始化阶段或网络插件未就绪场景
  • 先准备:确认节点容器运行时类型(Docker 或 Containerd)及当前网络连通性
  • 验收:通过 kubectl get pods -n kube-system 确认 Pod 状态为 Running

命令速用版

如果是 Docker 运行时,可尝试配置 daemon.json 加速:

sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.m.daocloud.io", "https://registry.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

如果是直接部署 Calico,修改 yaml 中的 image 字段:

# 原地址
docker.io/calico/cni:v3.26.1
# 替换为国内源示例
docker.m.daocloud.io/calico/cni:v3.26.1

为什么会这样

Calico 官方镜像默认托管在 docker.io 或 quay.io,在国内网络环境下,这些仓库的访问稳定性较差,容易出现连接超时或 DNS 解析失败。此外,Kubernetes 核心组件可以通过 kubeadm 参数指定镜像源,但 Calico 这类第三方插件的 YAML 清单中镜像地址通常是硬编码的,不会自动继承集群的全局镜像配置。

分步处理

1. 确认报错信息

使用以下命令查看 Pod 详细状态,确认是 ImagePullBackOff 还是 ErrImagePull:

kubectl describe pod <calico-pod-name> -n kube-system

2. 选择解决方案

方案 A:配置容器运行时镜像加速(适合批量拉取)

对于 Docker,修改 /etc/docker/daemon.json;对于 Containerd,修改 /etc/containerd/config.toml 中的 registry.mirrors 配置。配置完成后需重启容器运行时服务。

方案 B:修改 Calico 部署清单(适合单次部署)

下载 calico.yaml 文件,搜索 image 关键字,将 docker.io 或 quay.io 开头的地址替换为国内镜像仓库地址。注意保持版本号一致。

3. 重新应用配置

如果修改了 YAML,使用 kubectl apply -f calico.yaml 重新部署。如果修改了运行时配置,删除失败的 Pod 让其重建:

kubectl delete pod <calico-pod-name> -n kube-system

怎么验证是否生效

观察 Pod 状态是否变为 Running,并检查事件日志中不再有拉取失败记录:

kubectl get pods -n kube-system -o wide
kubectl describe pod <calico-pod-name> -n kube-system | grep -A 5 Events

也可以在节点上直接查看镜像是否已存在:

docker images | grep calico
# 或
crictl images | grep calico

常见坑

  • 容器运行时混淆:Kubernetes 1.24 后默认使用 Containerd,其配置文件和重启方式与 Docker 不同,配置 daemon.json 对 Containerd 无效。
  • 镜像标签不存在:替换镜像地址时,需确保目标仓库中存在相同的版本号标签,否则会出现 manifest unknown 错误。
  • 版本兼容性:部分 Calico 新版本(如 3.27)可能存在基础镜像兼容性问题,若遇到段错误可尝试回退至稳定版本(如 3.26.4)。
  • 网络插件依赖:在 Calico 启动前,节点间网络需互通,防火墙规则可能拦截 BGP 或 IPIP 流量。

参考来源

  • K8s 1.33 + Calico 国内镜像加速全攻略:5 分钟解决镜像拉取失败
  • K8s 1.33 集群搭建避坑指南:Calico 镜像拉取失败的 5 种解决方案
  • 保姆级教程:用 Daemon.json 永久解决 K8s 镜像拉取失败 (Calico/Flannel 通用)
  • 安装 k8s 时,calico 段错误处理

原文链接:https://www.zjcp.cc/ask/10467.html

http://www.jsqmd.com/news/781289/

相关文章:

  • Agentic AI自主智能体:核心架构与工程实践指南
  • 智能体化世界建模:《基础、能力、规律及展望》
  • 如何实现SQL存储过程存储过程参数标准化_统一命名规范.txt
  • TeachQuiz框架:精准评估教育视频知识迁移效果
  • 3dMax散布工具进阶玩法:用‘仅使用变换’和动画偏移,让你的场景动态元素更自然
  • Oumuamua-7b-RP代码审查实战:Java面试题智能分析与解答
  • 本地AI桌面助手Joanium:项目感知与自动化工作流实战
  • 量子计算中的资源最优重要性采样框架
  • 基于MCP协议构建AI电商趋势分析工具:以Amazon Trends MCP为例
  • 大规模视频动作数据集Action100M构建与应用解析
  • 计算机教材编写:系统化知识传递与工程实践融合
  • 长视频多模态理解:技术挑战与MLLMs应用实践
  • Attractor-Keyed Memory技术:物理计算中的高效检索革命
  • 深度学习中的激活引导技术:原理与实践
  • 嵌入式系统内存管理:静态分配、栈与堆的实践指南
  • 对比直接使用厂商API体验Taotoken在连接稳定性上的差异
  • 开源大语言模型在模型卡片信息提取中的实践
  • 使用LX工具链构建轻量级可组合Linux发行版:从原理到实践
  • 2Mamba:线性复杂度注意力机制优化长序列处理
  • OpenClawUI:基于React+TypeScript的现代UI组件库设计与实战
  • 我的CUDA安装翻车实录:Win11上那些坑(以及如何优雅地重装和清理)
  • 双iPhone实现高精度4D人体与场景捕捉技术解析
  • ZebraLogic:大语言模型逻辑推理能力评测基准解析
  • Autogrind:基于CI/CD的自动化代码审查工具实践指南
  • Ubuntu 20.04下,用Anaconda虚拟环境搞定pycairo和PyGObject的完整避坑指南
  • erclx/toolkit:自动化开发工具箱的设计、核心模块与实战集成
  • 基于LangChain与向量数据库构建私有数据智能问答系统实战指南
  • IBIS挑战赛:DNA模体发现的机器学习方法与应用
  • 开发者技能中心:结构化学习平台的设计与实践指南
  • 低成本振动信号重建心电图技术解析与应用