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”
]
...
✌️