K3s 镜像加速配置指南
适用于 K3s 集群(master + worker 节点),解决国内环境下 Docker Hub、Rancher、Pause 等镜像拉取超时问题。
1常见问题现象
当 K3s 集群出现以下错误时,通常表示镜像拉取失败:
Failed to create pod sandbox
failed to pull image "rancher/mirrored-pause:3.6"
failed to resolve reference "docker.io/rancher/mirrored-pause:3.6"
dial tcp xxx.xxx.xxx.xxx:443: i/o timeout
💡问题原因:K3s 节点直接访问 registry-1.docker.io(Docker Hub),由于国内网络环境限制导致连接超时。
⚠️关键说明:rancher/mirrored-pause 是 K3s 创建 Pod Sandbox 时的系统级基础镜像,一旦拉取失败,整个集群将无法创建 Pod。这是为什么该问题看似很小,实际影响非常严重。
⚠️重要提示:即使已配置镜像加速,如果集群中存在未生效的节点,仍会导致镜像拉取失败。
2核心要点
所有节点均需配置镜像加速
K3s 集群中的 master 节点和所有 worker 节点都必须单独配置镜像加速,仅配置 master 节点无法解决 worker 节点的镜像拉取问题。
3镜像系统说明
K3s 默认使用 containerd 作为容器运行时,其镜像配置方式与 Docker 不同。
K3s 不会读取 Docker 的配置文件 /etc/docker/daemon.json
配置文件路径:
/etc/rancher/k3s/registries.yaml
4配置文件示例
以下为推荐的 registries.yaml 配置示例:
💡配置说明:请将配置中的 你的专属域名 替换为您的实际专属域名前缀。例如,如果您的专属域名为 123abc.xuanyuan.run,则应将 你的专属域名 替换为 123abc。
配置要点:
docker.io 配置:必须使用主专属域名,不能使用带后缀的域名(如 -quay 后缀)或免费域名。
Kubernetes 镜像:k8s.gcr.io 已废弃,统一使用 registry.k8s.io。
Rancher 镜像:rancher/* 镜像实际 registry 仍然是 docker.io,containerd 不会将 rancher 视为独立 registry。是否配置该项不影响拉取结果,关键仍是 docker.io 的加速配置。该项为可选配置。
5配置步骤
需要在集群的每个节点(master 和 worker)上分别执行以下配置步骤。
💡注意:如果节点是通过 k3s-agent 加入集群的,只需要重启 k3s-agent 服务,不需要重启 master 节点的 k3s 服务。
重要提示:修改配置后必须重启 K3s 服务才能生效,containerd 不会自动加载配置变更。
步骤 1:创建配置文件
在每个节点上创建配置目录并编辑配置文件:
sudo mkdir -p /etc/rancher/k3s
sudo vi /etc/rancher/k3s/registries.yaml
将上述配置示例内容写入文件,并替换为您的专属域名。
步骤 2:重启 K3s 服务
Master 节点:
sudo systemctl restart k3s
Worker 节点:
sudo systemctl restart k3s-agent
6验证配置
配置完成后,可在任意节点执行以下命令验证镜像加速是否生效:
k3s crictl pull rancher/mirrored-pause:3.6
配置生效的表现:
- 镜像拉取速度正常,无明显延迟
- 不再访问 registry-1.docker.io
- 不再出现 i/o timeout 错误
- Pod Sandbox 创建失败问题得到解决
7常见问题
问题 1:仅配置了 master 节点
K3s 集群中所有节点都需要单独配置,仅配置 master 节点无法解决 worker 节点的镜像拉取问题。
问题 2:docker.io 使用了错误的专属域名
docker.io 必须使用主专属域名,不能使用带后缀的域名(如 -quay 后缀)。
docker.io:
endpoint:
- https://xxx-quay.xuanyuan.run # 错误示例问题 3:配置后未重启服务
containerd 不支持配置热加载,修改配置后必须重启 k3s 或 k3s-agent 服务才能生效。
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务
常见问题
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
轩辕镜像配置使用手册
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
登录仓库拉取
通过 Docker 登录认证访问私有仓库
Linux
在 Linux 系统配置镜像服务
Windows/Mac
在 Docker Desktop 配置镜像
Docker Compose
Docker Compose 项目配置
K8s Containerd
Kubernetes 集群配置 Containerd
K3s
K3s 轻量级 Kubernetes 镜像加速
宝塔面板
在宝塔面板一键配置镜像
群晖
Synology 群晖 NAS 配置
飞牛
飞牛 fnOS 系统配置镜像
极空间
极空间 NAS 系统配置服务
爱快路由
爱快 iKuai 路由系统配置
绿联
绿联 NAS 系统配置镜像
威联通
QNAP 威联通 NAS 配置
Podman
Podman 容器引擎配置
Singularity/Apptainer
HPC 科学计算容器配置
其他仓库配置
ghcr、Quay、nvcr 等镜像仓库
专属域名拉取
无需登录使用专属域名