我的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存储库拍摄图像?
答案 0 :(得分:0)
Kubernetes支持您可以创建的一种特殊类型的秘密,该秘密将用于获取Pod的图像。 More details here
答案 1 :(得分:0)
如果在集群中使用单个节点,请确保该Docker映像在该节点上可用。 您可以通过
进行检查docker image ls
还要将imagePullPolicy
设置为Never
,否则Kubernetes会尝试下载图像。
多个节点集群,您可以使用docker registry image。 使用本地注册表:
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文件更改为使用本地注册表。
答案 2 :(得分:-1)
imagePullPolicy应该设置为IfNotPresent以从本地docker存储库中提取图像