Развертывание Kubernetes - укажите несколько вариантов получения образа в качестве запасного варианта? - PullRequest
1 голос
/ 05 августа 2020

У нас время от времени возникали проблемы с получением изображений со всеми возможными docker реестрами, включая Artifactory, AWS ECR и GitLab. Даже DockerHub иногда имеет проблемы. нет, какие еще решения существуют для поддержания стабильности? Я видел такие вещи, как Харбор и Троу, но это похоже на тяжелое решение простой проблемы.

1 Ответ

2 голосов
/ 06 августа 2020

Есть ли способ в развертывании Kubernetes указать, что модуль может получать изображение из нескольких разных репозиториев, чтобы он мог вернуться, если один из них не работает?

Не совсем, не изначально ?. Вы, вероятно, могли бы обмануть узел K8s для извлечения изображений из разных реестров изображений (по одному), если вы поместите их за нечто вроде балансировщика нагрузки TCP, который направляет трафик c в несколько реестров. Но это может потребовать много тестирования и работы.

Если нет, какие еще решения существуют для поддержания стабильности? Я видел такие вещи, как Harbour и Trow, но это похоже на тяжелое решение простой проблемы.

Я бы сказал либо Harbour , Quay и Trow - это путь к go, если вы хотите что-то более избыточное.

Kubernetes имеет способность для установки ImagePullPolicy, и вы можете установить например, на Never, если вы хотите предварительно вытащить все критические образы на все узлы K8s. Вы можете настроить ie это на некоторую автоматизацию, чтобы предварительно растянуть ваши изображения по кластерам и узлам.

Я действительно открыл запрос функции K8s , чтобы узнать, получит ли эта идея тяги.

Обновление:

Если вы используете containerd или cri-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 пример

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

✌️

...