откат изображения для изображения argo в pod init

#docker #argo-workflows

Вопрос:

У меня есть проблема при запуске рабочих процессов argo в некотором масштабе. Некоторые модули переходят в состояние инициализации модуля на неопределенный срок, и когда я смотрю на события, это происходит из-за того, что изображение argo-exec не может быть извлечено из-за ограничений скорости извлечения изображения docker с того же IP/анонимного пользователя. Я не знаю, как это обойти.

Как я могу это обойти?

  1. возможно ли/рекомендуется сохранить изображение argo docker в моем собственном репозитории (возможно, обновить карту конфигурации контроллера, чтобы указать на нее) или
  2. есть ли способ управлять аутентифицированным доступом к докеру при извлечении изображения. Последнее не похоже на решение, хотя, возможно, это просто означает, что у меня больше квоты, но она все еще ограничена.
  3. Кажется, что в любом случае не должно быть необходимости продолжать вытаскивать это изображение, так что, может быть, в конфигурации есть что-то, где я могу это контролировать?? Этот последний вариант кажется идеальным, если это так.

Ответ №1:

Отвечаю на ваш ответ — начиная с последнего.


Вопрос 3:

Кажется, что в любом случае не должно быть необходимости продолжать вытаскивать это изображение, так что, может быть, в конфигурации есть что-то, где я могу это контролировать??

Ответ:

Реестр докеров, из которого вы извлекаете данные, вероятно, имеет ограничение по скорости.

Я бы посоветовал вам сделать то же самое, что вы сделали бы в Docker/K8s — используйте imagePullPolicy поле.

Ознакомьтесь с документами рабочего процесса argo в разделе спецификация контейнера.

Пример:

 apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  name: daemon-nginx
spec:
  entrypoint: daemon-nginx-example

  templates:
  - name: daemon-nginx-example
    steps:
    - - name: nginx-server
        template: nginx-server

  - name: nginx-server
    daemon: true
    container:
      image: nginx:1.13
      imagePullPolicy: IfNotPresent # <---- Here
      readinessProbe:
        httpGet:
          path: /
          port: "80"
        initialDelaySeconds: 2
        timeoutSeconds: 1
 

Вопрос 1:

возможно ли/рекомендуется сохранить изображение argo docker в моем собственном репозитории (возможно, обновить карту конфигурации контроллера, чтобы указать на нее)

Ответ:

Не является обязательным для решения вопроса об ограничении ставок.


Вопрос 2:

есть ли способ управлять аутентифицированным доступом к докеру при извлечении изображения..

Ответ:

По той же ссылке, которой я поделился — проверьте imagePullSecrets опцию.

Если вы не знакомы с этой концепцией в K8S — я предлагаю вам прочитать «Извлеките изображение из частного реестра«.