我在通过kubernetes部署docker映像时遇到问题。
一个问题是,我们不能使用任何docker映像注册表服务,例如docker hub或任何云服务。但是,是的,我将docker映像作为.tar文件。
但是,它总是失败,并显示以下消息
Warning Failed 1s kubelet, dell20
Failed to pull image "test:latest": rpc
error: code = Unknown
desc = failed to resolve image "docker.io/library/test:latest":
failed to do request: Head https://registry-1.docker.io/v2/library/test/manifests/latest: dial tcp i/o timeout
我还使用IfNotPresent或Never更改部署说明。在这种情况下,无论如何都将通过ErrImageNeverPull失败。
我的猜测是:kubernetes仍然尝试使用Docker Hub,因为它https://registry-1.docker.io是为了拉取映像。我只想在本地磁盘中使用tar docker映像,而不是从某些服务中提取。
是的,图像在docker中:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test latest 9f4916a0780c 6 days ago 1.72GB
有人可以给我关于这个问题的任何建议吗?
答案 0 :(得分:0)
我成功地在Kubernetes集群中使用了本地映像。我通过以下示例提供了解释:
唯一的先决条件是您需要确保有权访问此图像直接上载到节点。
使用以下命令从Docker注册表中拉出默认的nginx映像:
$ docker pull nginx:1.17.5
Nginx图像仅用于演示目的。
使用以下命令将该图像的新名称标记为nginx-local
$ docker tag nginx:1.17.5 nginx-local:1.17.5
将此图像另存为nginx-local.tar执行命令:
$ docker save nginx-local:1.17.5 > nginx-local.tar
文档链接:docker save
文件nginx-local.tar
用作图像。
此技术的问题在于,您需要确保所有节点都具有该图像。
缺少图像会导致豆荚创建失败。
要复制它,可以使用scp
。这是在计算机之间传输文件的安全方法。
scp的示例命令:
$ scp /path/to/your/file/nginx-local.tar user@ip_adddress:/where/you/want/it/nginx-local.tar
如果映像已在节点上,则需要使用以下命令将其加载到本地docker映像存储库中:
$ docker load -i nginx-local.tar
为确保已加载图像,请调用命令
$ docker images | grep nginx-local
文档链接:docker load:
它应该显示如下内容:
docker images | grep nginx
nginx-local 1.17.5 540a289bab6c 3 weeks ago 126MB
最后一部分是使用nginx-local映像创建部署。
请注意:
没有此选项,则窗格创建将失败。
下面是完全使用该映像的示例部署:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-local
namespace: default
spec:
selector:
matchLabels:
run: nginx-local
replicas: 5
template:
metadata:
labels:
run: nginx-local
spec:
containers:
- image: nginx-local:1.17.5
imagePullPolicy: Never
name: nginx-local
ports:
- containerPort: 80
使用以下命令创建此部署:
$ kubectl create -f local-test.yaml
结果是成功创建了吊舱,如下所示:
NAME READY STATUS RESTARTS AGE
nginx-local-84ddb99b55-7vpvd 1/1 Running 0 2m15s
nginx-local-84ddb99b55-fgb2n 1/1 Running 0 2m15s
nginx-local-84ddb99b55-jlpz8 1/1 Running 0 2m15s
nginx-local-84ddb99b55-kzgw5 1/1 Running 0 2m15s
nginx-local-84ddb99b55-mc7rw 1/1 Running 0 2m15s
此操作成功,但是我建议您使用本地docker存储库。它将简化使用图像的管理过程,并且将在您的基础结构内部。 链接到有关它的文档:Local Docker Registry