You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MicroK8s拉取本地Registry镜像失败,Pod卡在ContainerCreating状态排查

解决MicroK8s本地Registry镜像拉取失败问题(1.14/beta版本)

最近在Ubuntu主机上用MicroK8s 1.14/beta版本搭建本地镜像仓库时踩了个坑,折腾半天终于解决,把过程和经验分享出来:

前期正确配置步骤

我先按官方文档完成了本地Registry的基础配置:

  • 启用MicroK8s内置Registry:执行 microk8s.enable registry,确认registry pod运行状态正常
  • 配置Docker允许不安全Registry:修改 /etc/docker/daemon.json,添加配置 {"insecure-registries": ["127.0.0.1:32000"]},重启Docker后验证配置生效
  • 镜像打标并推送:给本地镜像打标签 127.0.0.1:32000/my-service,推送成功后,能通过 http://127.0.0.1:32000/v2/_catalog 查看到推送的镜像

遇到的异常问题

当我在deployment-local.yml中配置这个镜像并部署后,Pod一直卡在ContainerCreating状态。执行 microk8s.kubectl describe pods 查看详情,发现镜像拉取失败,错误提示:

用HTTPS访问HTTP registry

我尝试把镜像地址改成localhost,结果只有Firefox能访问Registry,但Pod拉取还是失败,错误变成:

连接localhost:443被拒绝

最终解决方法

折腾半天后才发现,问题出在deployment的yml文件里的image字段没加端口号!

原来我写的是:

image: 127.0.0.1/my-service

改成带端口的格式后:

image: 127.0.0.1:32000/my-service

Pod立刻正常拉取镜像,状态恢复为Running。

踩坑总结

  1. MicroK8s的本地Registry默认使用32000端口,配置镜像地址时必须带上端口,否则K8s会默认用443端口尝试HTTPS拉取,触发协议不匹配的错误
  2. 不要轻易把127.0.0.1换成localhost,容器内部的localhost和主机的localhost不属于同一网络空间,容易引发网络连通问题
  3. 遇到Pod状态异常时,优先用kubectl describe pods查看详细错误信息,能精准定位问题根源

内容的提问来源于stack exchange,提问作者ses

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:57:19