首页 > 解决方案 > K8S 无法从本地仓库拉取镜像

问题描述

我的 docker 存储库中有一个图像。我试图从中创建 POD,但 K8S 给出以下错误。

无法拉取图像“cloudanswer:latest”:rpc 错误:代码 = 未知 desc = 获取https://registry-1.docker.io/v2/:net/http:请求在等待连接时取消(Client.Timeout 超过而等待标题)

似乎 K8S 正在连接到https://registry-1.docker.io/v2/而不是从本地 docker 存储库中获取。

如何使 K8S 为本地 docker 存储库拍摄图像?

标签: dockerkubernetes

解决方案


如果您在集群中使用单个节点,请确保此 docker 映像在此节点上可用。您可以通过

docker image ls

也设置imagePullPolicyNever,否则 Kubernetes 会尝试下载镜像。

多节点集群,可以使用docker注册镜像。使用本地注册表:

docker run -d -p 5000:5000 --restart=always --name registry registry:2

现在正确标记您的图像:

docker tag ubuntu <dns-name-of-machine>:5000/ubuntu

运行注册表容器的机器的dns 名称应该可以被网络中的所有节点访问

现在将您的图像推送到本地注册表:

docker push <dns-name-of-machine>:5000/ubuntu

你应该能够把它拉回来:

docker pull <dns-name-of-machine>:5000/ubuntu

现在更改您的 yaml 文件以使用本地注册表。


推荐阅读