Docker k8s:使k8s可以访问本地映像

Docker k8s:使k8s可以访问本地映像,docker,kubernetes,k3s,Docker,Kubernetes,K3s,我刚刚安装了一个k8s群集k3d 我只是在玩这个游戏,我正在讨论第一个新手问题:如何加载本地创建的图像 我的意思是,我刚刚创建了一个标记为quarkus/feedly:v1的docker图像 如何使k8s群集可以访问它? 哪个是默认的k8s容器运行时? 是否存在与我的k8s群集和本地docker的任何交互?我的意思是,每个k8s节点都安装了docker/rkt/containerd运行时吗? 我可以在kubernetes内部创建docker注册表作为清单吗?我怎样才能让库伯内特斯接触到它? 我已

我刚刚安装了一个k8s群集k3d

我只是在玩这个游戏,我正在讨论第一个新手问题:如何加载本地创建的图像

我的意思是,我刚刚创建了一个标记为quarkus/feedly:v1的docker图像

如何使k8s群集可以访问它? 哪个是默认的k8s容器运行时? 是否存在与我的k8s群集和本地docker的任何交互?我的意思是,每个k8s节点都安装了docker/rkt/containerd运行时吗? 我可以在kubernetes内部创建docker注册表作为清单吗?我怎样才能让库伯内特斯接触到它? 我已经部署了我的清单,我得到了以下事件:

未能拉取图像quarkus/feedly:0.0.1-快照:rpc错误:code=Unknown desc=未能拉取和解压缩图像docker.io/quarkus/feedly:0.0.1-快照:未能解析参考docker.io/quarkus/feedly:0.0.1-快照:拉取访问被拒绝,存储库不存在或可能需要授权:服务器消息:不足\u范围:授权失败

我知道这是一个正常错误,因为quarkus注册表不存在


那边有帮助代码吗?

这里有一些提示:

要通过k8s群集访问映像,需要使用可从群集节点访问的注册表。因此,或者在docker hub上创建一个帐户并使用这个帐户,或者安装一个本地映像注册表并使用它。 Docker是大多数k8s发行版使用的默认容器运行时。但是,例如,您可以使用任何与OCI兼容的运行时容器。rkt不再是一个活的项目,所以我建议不要使用它。 这取决于你使用的k8s分布。无论如何,集群上的每个节点都需要安装一个容器运行时。这是强制性的。 将Docker注册表部署为kubernetes资源可能不是一个好主意,因为您需要进行大量配置才能使其正常工作。但是,最好的解决方案是在一个节点内部署docker注册表,然后使用节点IP调用它。中有一个配置示例。顺便说一下,Docker提供了一个注册表作为一个应用程序,因此安装非常简单。
希望这有帮助

如果您使用的是k3d,而这只是为了玩游戏而不是为了生产,并且出于任何原因,您都不想使用现有的许多容器注册表中的任何一个,例如:

等 您可以通过在registries.yaml中指定注册表来添加注册表

并使用docker在本地创建自己的注册表:

docker volume create local_registry
docker container run -d --name registry.localhost -v local_registry:/var/lib/registry --restart always -p 5000:5000 registry:2

你在用minikube吗?或者它是一个独立的k8s集群?一个集群k3d文档有一个章节,这似乎解决了你问题的核心。谢谢Marc。我又补充了一个问题。
docker volume create local_registry
docker container run -d --name registry.localhost -v local_registry:/var/lib/registry --restart always -p 5000:5000 registry:2