Kubernetes 部署 - 为图像拉取指定多个选项作为后备?

2023-12-07

我们所有可能的 docker 注册表(包括 Artifactory、AWS ECR 和 GitLab)都曾一度遇到过镜像拉取问题。即使 DockerHub 偶尔也会出现问题。

Kubernetes 部署中是否有一种方法可以指定 pod 可以从多个不同的存储库获取映像,以便在其中一个存储库出现故障时可以回退?

如果没有,还有哪些其他解决方案来保持稳定?我见过像 Harbor 和 Trow 这样的东西,但这似乎是对一个简单问题的严厉解决方案。


Kubernetes 部署中是否有一种方法可以指定 pod 可以从多个不同的存储库获取映像,以便在其中一个存储库出现故障时可以回退?

不是真的,不是天生的。如果您将它们放置在诸如将流量定向到多个注册表的 TCP 负载均衡器之类的东西之后,您可能会欺骗 K8s 节点从不同的映像注册表中提取映像(一次一个)。但这可能需要大量的测试和工作。

如果没有,还有哪些其他解决方案来保持稳定?我见过像 Harbor 和 Trow 这样的东西,但这似乎是对一个简单问题的严厉解决方案。

我会说要么Harbor, Quay, and Trow如果你想要更多多余的东西,这是一个可行的方法。

库伯内特斯有ability to set ImagePullPolicy你可以将其设置为Never如果您想在所有 K8s 节点上预拉取所有关键映像。您可以将其与一些自动化结合起来,以跨集群和节点预先拉取映像。

我实际上已经开了一个K8s功能要求看看这个想法是否受到关注。

Update:

如果您正在使用容器d or cri-o(甚至Docker有注册表镜像)。您可以配置镜像注册表:

containerd.toml example

...
    [plugins.cri.registry]
      [plugins.cri.registry.mirrors]
        [plugins.cri.registry.mirrors."docker.io"]
          endpoint = ["https://registry-1.docker.io"]
        [plugins.cri.registry.mirrors."local.insecure-registry.io"]
          endpoint = ["http://localhost:32000"]
        [plugins.cri.registry.mirrors."gcr.io"]
          endpoint = ["https://gcr.io"]
      [plugins.cri.registry.configs]
        [plugins.cri.registry.configs.auths]
          [plugins.cri.registry.configs.auths."https://gcr.io"]
            auth = "xxxxx...."
...

cri-o.conf example

...
# registries is used to specify a comma separated list of registries to be used
# when pulling an unqualified image (e.g. fedora:rawhide).
registries = [
“registry.example.xyz”,
“registry.fedoraproject.org”
]
...

✌️

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kubernetes 部署 - 为图像拉取指定多个选项作为后备? 的相关文章

随机推荐