【问题标题】:Kubernetes deployment - specify multiple options for image pull as a fallback?Kubernetes 部署 - 指定图像拉取的多个选项作为后备?
【发布时间】:2020-11-25 17:21:49
【问题描述】:

我们所有可能的 Docker 注册表(包括 Artifactory、AWS ECR 和 GitLab)都曾有一次或多次出现图像拉取问题。甚至 DockerHub 偶尔也会出现问题。

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

如果不是,还有哪些其他解决方案可以保持稳定性?我见过像 Harbour 和 Trow 这样的东西,但它似乎是一个简单问题的笨拙解决方案。

【问题讨论】:

    标签: image docker kubernetes containers registry


    【解决方案1】:

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

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

    如果没有,还有哪些其他解决方案可以保持稳定性?我见过 Harbour 和 Trow 之类的东西,但它似乎是对一个简单问题的强硬解决方案。

    如果您想要更多多余的东西,我会说 HarborQuayTrow 是要走的路。

    Kubernetes 有ability 来设置ImagePullPolicy,如果你想预先拉取所有K8s 节点上的所有关键镜像,你可以将其设置为Never。您可以将其与一些自动化联系起来,以便在您的集群和节点中预先拉取您的图像。

    我实际上已经打开了一个 K8s feature request 来看看 ? 这个想法是否会受到关注。

    更新:

    如果您使用的是containerdcri-o(甚至Docker 有注册表镜像)。您可以配置镜像注册表:

    containerd.toml 示例

    ...
        [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”
    ]
    ...
    

    ✌️

    【讨论】:

    • 很棒且非常完整的答案。不幸的是,这几乎是我所期待的,哈哈。我很欣赏 k8s 功能要求;赞成。在这里有一个原生解决方案真是太棒了。
    • 存在导致 docker registry-mirrors 解决方案几乎无法使用的开放错误,这:github.com/moby/moby/issues/30880,意味着您不能使用带有身份验证的镜像
    猜你喜欢
    • 2022-10-31
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 2020-02-25
    • 2018-09-26
    • 2020-06-18
    • 1970-01-01
    • 2018-09-06
    相关资源
    最近更新 更多