1

我刚刚安装了一个 k8s 集群(k3d)。

我只是在玩这个,我正在解决第一个新手问题:如何加载我们本地创建的图像。

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

  1. 如何使其可用于 k8s 集群?
  2. 哪个是默认的 k8s 容器运行时?
  3. 与我的 k8s 集群和我的本地 docker 是否存在任何交互?我的意思是,每个 k8s 节点都安装了 docker/rkt/containerd 运行时吗?
  4. 我可以在 kubernetes 中创建一个 docker 注册表作为清单吗?我怎样才能让 kubernetes 访问它?

我已经部署了清单,并且收到了以下事件:

无法拉取图像“quarkus/feedly:0.0.1-SNAPSHOT”:rpc 错误:代码 = Unknown desc = 无法拉取和解压图像“docker.io/quarkus/feedly:0.0.1-SNAPSHOT”:无法解析参考“docker.io/quarkus/feedly:0.0.1-SNAPSHOT”:拉取访问被拒绝,存储库不存在或可能需要授权:服务器消息:insufficient_scope:授权失败

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

那里有帮助代码吗?

4

2 回答 2

1

这里有一些指示:

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

希望这可以帮助 !

于 2020-01-28T08:41:25.160 回答
0

如果您使用的是 k3d,而这只是为了玩耍(不是生产目的),并且出于任何原因不想使用其中的许多容器注册表中的任何一个,例如:

您可以通过在registries.yaml

k3d cluster create mycluster --volume "/home/YOU/my-registries.yaml:/etc/rancher/k3s/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

请注意,它的作用是使用此映像创建注册表:

来自 DockerHub ‍♂️,这是您避免使用的 docker 注册表之一

在这里您可以找到有关如何设置的更多信息: https ://k3d.io/usage/guides/registries/

最后,请记住,当您从私有 registry 中获取镜像时,您必须告诉 K8s 您私有 registry 的身份验证信息,以便它可以下载镜像....否则会给您这个错误:

...拉取访问被拒绝,存储库不存在或可能需要授权:服务器消息:不足_范围:授权失败

您可以在此处找到有关如何设置的更多文档:

于 2020-12-24T19:33:13.760 回答