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

MacOS下Kubernetes私有镜像仓库Pod创建失败求助

排查Kubernetes拉取本地私有仓库镜像失败的问题

我来帮你梳理下这个卡了一周的问题,结合你MacOS+Docker Desktop的环境,大概率是网络连通性或者镜像拉取配置的问题,咱们一步步来排查:

一、先确认私有仓库的网络可达性

你在Mac本地能正常拉取镜像,但Kubernetes集群其实运行在Docker Desktop的虚拟机里,它的localhost和Mac的localhost不是同一个网络空间,这是最容易踩的坑:

  • 先在Mac本地测试仓库可用性:执行docker pull localhost/pong:latest,如果能成功拉取,说明仓库本身没问题;如果失败,先检查仓库容器是否正常运行(docker ps看状态)、端口映射是否正确。
  • 进入Kubernetes集群的虚拟机内部测试连通性:
    执行命令进入集群节点shell:
    docker run -it --rm --privileged --pid=host debian nsenter -t 1 -m -u -i -n sh
    
    然后尝试访问仓库(假设你的仓库端口是5000):
    curl http://host.docker.internal:5000/v2/_catalog
    
    如果能返回包含pong镜像的列表,说明网络通;如果不行,要修改私有仓库的启动命令,把监听地址从127.0.0.1改成0.0.0.0,让外部(包括K8s虚拟机)能访问。

二、修正镜像拉取地址

K8s虚拟机里无法直接用localhost访问Mac的仓库,必须用Docker Desktop提供的专属地址host.docker.internal,所以你的Pod镜像地址应该改成:

image: host.docker.internal:5000/pong:latest

(把5000换成你实际的仓库端口)

三、检查非安全仓库配置和密钥

  • 确认Docker Engine的非安全仓库配置包含host.docker.internal:5000:
    打开Docker Desktop设置→Docker Engine,添加或修改配置:
    {
      "insecure-registries": ["localhost:5000", "host.docker.internal:5000"]
    }
    
    保存后重启Docker和K8s集群,让配置生效。
  • 检查密钥是否和镜像地址匹配:
    创建密钥时的--docker-server必须和Pod里的镜像仓库地址一致,比如:
    kubectl create secret docker-registry reg-secret --docker-server=host.docker.internal:5000 --docker-username=<你的仓库用户名> --docker-password=<你的仓库密码> --docker-email=<邮箱>
    
    同时要确保Pod的YAML里关联了这个密钥:
    spec:
      imagePullSecrets:
        - name: reg-secret
    

四、查看Pod事件定位具体错误

如果还是失败,用命令查看Pod的详细事件,能拿到最直接的错误原因:

kubectl describe pod <你的Pod名称>

比如如果是connection refused,说明网络还是不通;如果是unauthorized,说明密钥配置有问题,照着错误信息针对性解决就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:36:09