我有一个kubernetes集群,它将containerd作为容器运行时。
正如我所读到的,Kubernetes中容器运行时而不是docker的概念并没有改变。所以我想要实现的是在我的集群中创建一个pod,使用我在本地用docker构建的图像。
所以当我有了我在本地创建的图像:
REPOSITORY TAG IMAGE ID CREATED SIZE
app latest 726b53fd88c1 About an hour ago 932MB
当我使用图片名称"app"在我的部署文件s中,pod的状态为"errimagepull";出现以下错误:
下载图片失败"app": rpc error: code = Unknown desc = Failed to解压镜像"docker.io/library/app:latest":失败解析引用"docker.io/library/app:latest": pull访问被拒绝存储库不存在或可能需要授权:服务器消息:insufficient_scope: authorization failed
我认为发生这种情况是因为容器不识别图像。实际上,当我运行以下命令:
ctr images ls
没有图片。所以我将图像导入到containerd中,现在当我运行前面的命令时,我可以在containerd中看到我的图像:
REF TYPE DIGEST SIZE PLATFORMS LABELS
docker.io/library/app:latest application/vnd.docker.distribution.manifest.v2+json sha256:9e12e07a860f91b713adbb9d5752aef364328afc468d1ccc1af6a31ca464fd78 910.5 MiB linux/amd64 -
但是当我在我的部署文件中使用上面图像的ref时,仍然会出现与我相同的错误。
如何在kubernetes部署中使用带有containerd的本地自定义映像?
最后,您似乎必须导入一个特定的名称空间,"namespace=k8s.io"。因此,如果您在这个命名空间中导入映像,kubernetes将识别该映像并成功运行pod !