Государственные рабочие места в Kubernetes - PullRequest
1 голос
/ 17 апреля 2019

У меня есть требование запускать специальную работу, время от времени.Для работы нужно состояние.Строительство государства занимает много времени.Таким образом, желательно поддерживать постоянное состояние и возможность многократного использования в последующих прогонах в течение короткого времени оборота.Я хочу, чтобы эта работа выполнялась как стручки K8s.

Это полный набор требований:

  1. Стручки выйдут из строя после окончания работы.Контроллер K8s не должен пытаться вызвать модули.
  2. К каждому модулю должен быть прикреплен постоянный том.Там должно быть 1 объем на стручок.Я планирую использовать EBS.
  3. Мы должны быть в состоянии вручную восстановить блоки в будущем.
  4. У будущих прогонов может быть больше или меньше реплик, чем у прошлых прогонов.

Я знаю, что K8s поддерживает как Jobs, так и Statefulsets.Есть ли контроллер, который поддерживает оба одновременно?

1 Ответ

2 голосов
/ 17 апреля 2019
  1. Стручки выключатся после окончания работы. Контроллер K8s не должен пытаться воспитывать стручки.

Это то, что делает Джобс - беги к завершению. Вы только контролируете, хотите ли вы повторить попытку на exit > 0.

  1. Стручки должны иметь постоянный том, прикрепленный к их.

Одинаковый объем для всех? Будут ли они писать или только читать? Какой объем у вас есть, AWS EBS или аналогичный? В зависимости от ответов вы можете разделить входные данные между несколькими томами или использовать отдельные тома для записи, а затем завершить задание для сборки в 1 томе (вид карты уменьшен). Или используйте бэкэнд тома, который поддерживает мульти-монтирование RW https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes (см. Таблицу для ReadWriteMany)

  1. Мы должны быть в состоянии вручную вернуть стручки в будущем.

Рабочие места подходят здесь: Вы запускаете его, когда вам это нужно, и оно выполняется до завершения.

  1. У будущих прогонов может быть больше или меньше реплик, чем у прошлых прогонов.

Рабочие места здесь подходят. Укажите другое значение completions или parallelism при запуске задания: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#parallel-jobs

StatefulSets - это разные концепции, они в основном используются для кластерного программного обеспечения, которое вы запускаете постоянно и должны сохранять роль для каждого модуля (например, шарда).

...