启动MicroK8s集群时拉取registry.k8s.io镜像报403错误
解决MicroK8s拉取registry.k8s.io/pause:3.7镜像403的问题
问题分析
从错误日志和docker拉取同样失败的情况来看,核心原因是服务器无法正常访问registry.k8s.io镜像仓库,导致拉取pause镜像时返回403 Forbidden。以下是针对性的解决方案:
解决方案
1. 验证网络连通性与域名解析
- 测试镜像仓库的可访问性:
如果返回403或无法连接,说明网络层面存在限制(比如防火墙、安全组拦截,或者网络访问受限)。curl -I https://registry.k8s.io/v2/pause/manifests/3.7 - 检查域名解析:
若解析异常,可临时修改服务器DNS配置,编辑nslookup registry.k8s.io/etc/resolv.conf添加公共DNS:echo "nameserver 8.8.8.8" >> /etc/resolv.conf
2. 配置镜像加速替换registry.k8s.io
修改MicroK8s的containerd配置,将registry.k8s.io替换为可访问的镜像源:
- 编辑containerd模板文件:
sudo vi /var/snap/microk8s/current/args/containerd-template.toml - 在
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]节点下添加:[plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"] endpoint = ["https://registry.cn-hangzhou.aliyuncs.com/google_containers"] - 重启MicroK8s使配置生效:
sudo microk8s stop && sudo microk8s start
3. 手动导入pause镜像
如果网络限制无法解除,可在能正常访问的机器上拉取镜像,再导入目标服务器的MicroK8s:
- 在可访问机器上拉取并导出镜像:
docker pull registry.k8s.io/pause:3.7 docker save -o pause.tar registry.k8s.io/pause:3.7 - 将
pause.tar传输到目标服务器后,导入MicroK8s的containerd:sudo microk8s ctr images import pause.tar - 验证镜像是否导入成功:
sudo microk8s ctr images list | grep pause
4. 检查现有配置有效性
你之前启用的localhost:3200不安全仓库仅针对私有镜像,与registry.k8s.io的访问无关,无需调整该配置。MicroK8s的DNS功能不影响镜像拉取的网络连接,可忽略。
内容的提问来源于stack exchange,提问作者StefanoZambrini
相关产品推荐
相关产品推荐

