K3s 使用 containerd 时出现 "failed to pull and unpack image" 具体排查

发布时间 - 2026-01-19 00:00:00    点击率:
镜像拉取失败不一定是containerd故障,需先用crictl验证网络、TLS证书、认证及镜像地址;再检查containerd的config.toml中私有仓库CA、registry配置和auth凭据;修改后须重启k3s或containerd,并用crictl info、ctr命令确认生效;应急可手动导入镜像并重打标签,或通过启动参数指定*。

确认镜像拉取失败是否真由 containerd 引起

先别急着改配置。K3s 默认用 containerd,但错误日志里出现 failed to pull and unpack image,不等于一定是 containerd 自身故障——它只是执行层,真正卡点往往在上游:网络、证书、认证或镜像地址本身。

最直接的验证方式是在出问题的节点上,用 crictl 模拟 kubelet 行为:

  • 运行 sudo crictl pull harbor.intra.example.com/proj/app:v1.2.3(替换为你实际的镜像地址)
  • 如果报 x509: certificate signed by unknown authority,说明是 TLS 信任问题
  • 如果报 context deadline exceeded 或连接拒绝,优先查网络连通性与端口开放情况(如 Harbor 的 443/80 是否可达)
  • 如果提示 unauthorized: authentication required,说明需要 registry 认证,但 K3s 未配置对应 secret 或 containerd 配置未生效

检查 containerd 对私有仓库的 TLS 和认证配置

K3s 不读 Docker 的 ~/.docker/config.json,它依赖 containerd 的 config.toml。关键配置路径通常是:

  • /var/lib/rancher/k3s/agent/etc/containerd/config.toml(agent 节点)
  • /var/lib/rancher/k3s/server/etc/containerd/config.toml(server 节点)

重点确认以下几项是否正确写入(需重启 containerd 或整个 k3s 才生效):

  • 私有仓库 CA 证书:把 Harbor 自签名 CA 证书(如 ca.crt)拷到 /var/lib/rancher/k3s/agent/etc/containerd/certs.d/harbor.intra.example.com/ca.crt(目录需手动创建)
  • registry 配置块:在 config.toml[plugins."io.containerd.grpc.v1.cri".registry] 下添加对应 host 的 host 条目,启用 skip_verify = true(仅测试环境)或指定 ca 路径
  • 认证凭据:若需账号密码,在 hosts.toml 中配置 auth 字段(Base64 编码后的 username:password),或使用 kubectl create secret docker-registry 并在 Pod 中引用

验证 containerd 实际使用的配置是否加载成功

修改 config.toml 后容易忽略一步:containerd 不会热重载该文件。必须重启服务:

  • 执行 sudo systemctl restart k3s(k3s 会一并重启内置 containerd)
  • 或单独重启 containerd:sudo systemctl restart containerd(仅当 K3s 以外部 containerd 模式运行时)

验证是否生效的方法:

  • 运行 sudo ctr -n k8s.io image ls | grep your-image 查看本地是否有缓存镜像
  • 执行 sudo crictl info | grep -A5 registry 看输出中是否列出你配置的私有 registry 地址
  • 查看 containerd 日志:sudo journalctl -u k3s -n 100 --no-pager | grep -i "harbor\|pull\|cert"

绕过拉取失败的临时应急手段

生产环境不能长期卡在镜像拉取上。当排查耗时较长,可快速恢复业务:

  • 手动导入镜像:在能联网的机器上 docker pull 镜像 → docker save -o app.tar image:tag → 拷贝到目标节点 → sudo ctr -n k8s.io image import app.tar
  • 重打标签匹配原需求:比如 K3s 默认要拉 docker.io/rancher/pause:3.6,但你已导入 harbor.intra/pause:3.6,则运行:sudo ctr -n k8s.io image tag harbor.intra/pause:3.6 docker.io/rancher/pause:3.6
  • 修改 K3s 启动参数跳过默认镜像拉取:通过 --pause-image--system-default-registry 指定*前缀,避免硬编码依赖外网


# word  # js  # json  # docker  # 编码  # app  # 端口  # ai  # red  # var  # default  # kubelet  # rancher  # 镜像  # 重启  # 是在  # 重打  # 为你  # 并在  # 可达  # 但你  # 急着  # 先用 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  如何挑选最适合建站的高性能VPS主机?  Laravel怎么在Blade中安全地输出原始HTML内容  如何在橙子建站上传落地页?操作指南详解  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  如何在阿里云域名上完成建站全流程?  Laravel如何创建自定义Artisan命令?(代码示例)  网站制作企业,网站的banner和导航栏是指什么?  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  如何在Windows虚拟主机上快速搭建网站?  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  如何快速辨别茅台真假?关键步骤解析  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  大连网站制作公司哪家好一点,大连买房网站哪个好?  如何确保西部建站助手FTP传输的安全性?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  魔毅自助建站系统:模板定制与SEO优化一键生成指南  如何在阿里云高效完成企业建站全流程?  奇安信“盘古石”团队突破 iOS 26.1 提权  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  Laravel如何为API生成Swagger或OpenAPI文档  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  Python面向对象测试方法_mock解析【教程】  独立制作一个网站多少钱,建立网站需要花多少钱?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  济南网站建设制作公司,室内设计网站一般都有哪些功能?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  高端云建站费用究竟需要多少预算?  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  移动端脚本框架Hammer.js  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  开心动漫网站制作软件下载,十分开心动画为何停播?  千库网官网入口推荐 千库网设计创意平台入口  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  Linux后台任务运行方法_nohup与&使用技巧【技巧】  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?