K3s pod 拉镜像特别慢或超时但宿主机 docker/crictl pull 正常
发布时间 - 2026-01-20 00:00:00 点击率:次K3s镜像拉取失败源于其独立containerd运行时与宿主机Docker隔离,需检查/var/lib/rancher/k3s/agent/containerd镜像库、config.toml镜像加速配置、sandbox镜像拉取及DNS/TLS校验。
这说明镜像拉取能力本身没问题,问题出在 K3s 的运行时上下文或配置层面。K3s 默认用 containerd 作为容器运行时,它和 Docker 是两套独立的镜像存储与网络栈,即使宿主机上 docker pull 或 crictl pull 成功,也不代表 K3s 能复用或正确访问这些镜像。
检查 containerd 是否真正加载了镜像
K3s 管理自己的 containerd 实例,其镜像库路径是独立的(通常为 /var/lib/rancher/k3s/agent/containerd),和宿主机 Docker 的 /var/lib/docker 完全隔离。
- 确认当前 K3s 使用的 containerd 是否看到目标镜像:
sudo crictl -r unix:///run/k3s/containerd/containerd.sock images - 如果没列出,说明镜像没被 K3s 的 containerd 加载 —— 即使你用
crictl pull拉过,也得指定正确的 socket(默认 K3s 不走系统级 containerd) - 手动导入镜像(如已下载 tar 包):
sudo ctr -n k8s.io i import nginx.tar
确认 K3s 使用的 registry 配置是否生效
K3s 启动时会自动生成 containerd 的配置文件:/var/lib/rancher/k3s/agent/etc/containerd/config.toml。若未显式配置镜像加速器,它默认直连 docker.io,极易超时。
- 检查该 config.toml 中是否包含
registry.mirrors或registry.configs段落 - 常见有效配置(以阿里云镜像为例):
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://registry.cn-hangzhou.aliyuncs.com"] - 修改后必须重启 K3s:
sudo systemctl restart k3s
排查 sandbox 镜像拉取失败(常见于 pause 镜像)
K3s 启动 Pod 前必须先拉取 sandbox 镜像(如 rancher/mirrored-pause:3.6),这个步骤失败会导致所有 Pod 卡在 ContainerCreating,且错误日志常不提示具体镜像名。
- 查看 K3s 日志定位实际失败镜像:
sudo journalctl -u k3s -n 100 --no-pager | grep -i "failed.*pull\|sandbox" - 手动拉取并重打标签(关键一步):
sudo crictl pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6sudo ctr -n k8s.io i tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.6 k8s.gcr.io/pause:3.6 - 若使用私有仓库,还需确保
ctr已登录:sudo ctr -n k8s.io auth login registry.example.com -u user -p pass
验证 DNS 和 TLS 握手是否被干扰
K3s 的 containerd 在拉取镜像时使用自己的 DNS 解析和证书校验逻辑,和宿主机可能不同。
- 测试 containerd 是否能解析镜像域名:
sudo nslookup docker.io $(cat /var/lib/rancher/k3s/agent/etc/containerd/resolv.conf 2>/dev/null | head -1 | cut -d' ' -f2) - 检查是否因证书问题失败(尤其拉 gcr.io、quay.io):
curl -v https://k8s.gcr.io/v2/ 2
>&1 | grep -i "ssl\|certificate"
- 若需信任自签名 CA,需将证书放入:
/var/lib/rancher/k3s/agent/etc/containerd/certs.d/k8s.gcr.io/ca.crt
# go
# docker
# nginx
# ssl
# curl
# 阿里云
# 栈
# ai
# unix
# dns
# google
# 配置文件
# red
# NULL
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
微信小程序 闭包写法详细介绍
html如何与html链接_实现多个HTML页面互相链接【互相】
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
怎样使用JSON进行数据交换_它有什么限制
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
如何破解联通资金短缺导致的基站建设难题?
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
Python正则表达式进阶教程_复杂匹配与分组替换解析
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
青岛网站建设如何选择本地服务器?
Laravel怎么为数据库表字段添加索引以优化查询
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
js代码实现下拉菜单【推荐】
Laravel怎么在Blade中安全地输出原始HTML内容
详解jQuery中的事件
如何用美橙互联一键搭建多站合一网站?
网易LOFTER官网链接 老福特网页版登录地址
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
如何快速搭建高效WAP手机网站吸引移动用户?
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
在Oracle关闭情况下如何修改spfile的参数
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
简历在线制作网站免费版,如何创建个人简历?
EditPlus中的正则表达式实战(5)
Claude怎样写约束型提示词_Claude约束提示词写法【教程】
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
做企业网站制作流程,企业网站制作基本流程有哪些?
Laravel如何使用模型观察者?(Observer代码示例)
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
如何挑选最适合建站的高性能VPS主机?
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
高端企业智能建站程序:SEO优化与响应式模板定制开发
html5的keygen标签为什么废弃_替代方案说明【解答】
javascript中的try catch异常捕获机制用法分析
javascript如何操作浏览器历史记录_怎样实现无刷新导航
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
公司门户网站制作流程,华为官网怎么做?
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
如何在建站宝盒中设置产品搜索功能?
javascript中闭包概念与用法深入理解


