kubernetes не отслеживает количество успешных пакетов для завершения работы - PullRequest
0 голосов
/ 31 августа 2018

Я запускаю задание, как определено здесь , т. Е. "Параллельная обработка с использованием рабочей очереди" на ГКЕ

Каждый модуль запускает один контейнер, и этот контейнер имеет сценарий R, на завершение которого требуется около 5 минут, а затем Pod успешно завершает работу.

Когда я запускаю задание для небольшого количества завершений, таких как

completions: 606
parallelism: 450
backoffLimit: 1

Все работает нормально, кластер масштабируется должным образом и работа завершается.

Но когда я запускаю работу с такими характеристиками, как

completions: 37572
parallelism: 1610
backoffLimit: 1

Счетчик успешно завершен на некоторое время, но после этого он остается от 1000 до 1500 и никогда не доходят до завершений

enter image description here

Несмотря на то, что модули успешно завершаются, я вижу их на панели управления облаком Google kubernetes, и выходные файлы также создаются успешно. Очередь также очень точно показывает прогресс enter image description here

И это случалось со мной каждый раз, когда я выполнял работу с большим количеством параллелизма. Я пробовал разные настройки пула автоматического масштабирования узла в моем кластере для машинного типа с 64-процессорами, 32-процессорами, 16-процессорами.

В настоящее время я обращаюсь с
=> Когда в очереди есть число потребителей == параллелизм ИЛИ files_in_output == завершения
=> Я удаляю задание и удаляю пул узлов автомасштабирования.

Пожалуйста, найдите детали кластера enter image description here

Состояние кластера всегда зеленое во время цикла.

ВОПРОС

  • Почему число выполненных работ никогда не увеличивается после определенного момента (т.е. в моем случае ниже моего числа параллелизма)? Несмотря на то, что капсулы заканчиваются успешно.
  • И что хуже всего, число выполненных заданий тоже уменьшается? Это я даже не могу понять. Какова будет причина того, что kubernetes ведет себя так?
  • Нужно ли мне добавить несколько дополнительных полей в мой шаблон спецификации, чтобы он правильно отслеживает выполнение заданий?

Обновление:

  • Мне достаточно квоты процессора
  • Каждый контейнер (Pod) ограничен использованием 1 ЦП и 1 ГБ ОЗУ.
  • Я также обновил кластер и пулы узлов до версии 1.10.6-gke.2. Не везет.

GKE ISSUE REPORTED => https://issuetracker.google.com/issues/114650730

job.yml

apiVersion: batch/v1
kind: Job
metadata:
  # Unique key of the Job instance
  name: my-job
spec:
  completions: 37572
  parallelism: 1610
  backoffLimit: 1
  template:
    metadata:
      name: my-job
      labels:
        jobgroup: my-jobs
    spec:
      volumes:
      - name: jobs-pv-storage
        persistentVolumeClaim:
          claimName: fileserver-claim
          readOnly: false
      containers:
      - name: rscript
        image: gcr.io/project/image:v1
        resources:
          limits:
            cpu: "1"
            memory: 1200Mi
          requests:
            cpu: "1"
            memory: 1000Mi
        env:
        - name: BROKER_URL
          value: amqp://user:pwd@rabbitmq-service:5672
        - name: QUEUE
          value: job-queue
        volumeMounts:
        - mountPath: /opt/work/output
          name: jobs-pv-storage
      # Do not restart containers after they exit
      restartPolicy: Never
...