【问题标题】:k8s: make local image accessible for k8sk8s:让 k8s 可以访问本地图像
【发布时间】:2020-01-28 08:13:10
【问题描述】:

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

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

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

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

我已经部署了我的清单并且我收到了这些事件:

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

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

那里有帮助代码吗?

【问题讨论】:

  • 你在使用 minikube 吗?还是一个独立的 k8s 集群?
  • 一个k3d集群
  • k3d 文档在Using a local registry 上有一个部分,这似乎解决了您问题的核心。

标签: docker kubernetes k3s


【解决方案1】:

这里有一些提示:

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

希望这会有所帮助!

【讨论】:

  • 谢谢马克。我添加了另一个问题。
【解决方案2】:

如果您使用的是 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 的身份验证信息,这样它才能下载镜像....否则它会给你这个错误:

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

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

【讨论】:

    猜你喜欢
    • 2019-09-18
    • 1970-01-01
    • 2021-11-19
    • 2021-04-06
    • 2022-06-30
    • 1970-01-01
    • 2022-11-03
    • 2020-04-02
    • 1970-01-01
    相关资源
    最近更新 更多