Kubernetes

Вакансии Kubernetes и Cron

Вакансии Kubernetes и Cron
Большинство приложений, которые работают в распределенной системе, такой как Kubernetes, всегда работают, как веб-серверы, базы данных или серверы API. Но есть отдельный класс объектов, которые должны запускаться один раз или только время от времени просыпаться и запускать свой курс. Периодические задания, такие как обновление сертификатов TLS с помощью таких агентов, как Certbot, являются классическим примером таких заданий, выполняемых на традиционных серверах. Это делается с помощью утилиты Cron в системах Unix.

В Kubernetes есть аналогичный способ запуска одноразовых процессов Вакансии и периодические процессы типа cron вакансии.

Мы начнем с типичного примера того, что такое вакансии, и продемонстрируем стандартный пример из официальных документов. Из этого примера будет легко понять, что означает успешное выполнение задания в контексте Kubernetes.

Чтобы продолжить, я бы порекомендовал вам использовать Kataconda Playground для Kubernetes, который предоставит готовый кластер Kubernetes без необходимости вручную настраивать его или рисковать производственным кластером для экспериментов.

Вакансии Kubernetes

Задания - это абстракции Kubernetes более высокого уровня, похожие на ReplicaSets и Deployments. Но в отличие от модулей, управляемых развертыванием и ReplicaSets, модули, выполняющие задание, завершают свою работу и завершают работу.

Когда указанное количество модулей достигает завершения, задание считается успешно завершенным. Какие критерии, которые определяют успешное завершение работы модуля, мы определим в файле YAML задания. Затем контроллер заданий гарантирует, что определенное количество модулей успешно завершено и задание считается завершенным.

Давайте создадим задание, которое печатает цифры числа Пи до 2000 разрядов в своих журналах, которые мы рассмотрим. Создайте файл и назовите его моя работа.ямл и сохраните в нем следующее содержимое;

apiVersion: batch / v1
вид: Работа
метаданные:
имя: пи
спецификация:
шаблон:
спецификация:
контейнеры:
- имя: пи
изображение: perl
команда: ["perl", "-Mbignum = bpi", "-wle", "print bpi (2000)"]
restartPolicy: Никогда
backoffLimit: 4

Создайте задание, используя этот файл:

$ kubectl create -f ./работа.ямл

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

$ kubectl получить поды
НАЗВАНИЕ ГОТОВ СОСТОЯНИЕ ВОЗРАСТ НАЗАД
pi-wg6zp 0/1 Завершено 0 50 с

Вы увидите, что статус модуля, относящегося к пи, равен Завершенный не работает или прекращено.Вы также можете скопировать имя модуля, чтобы мы могли убедиться, что число Пи действительно составляет 2000 цифр. Конкретное название модуля может отличаться в вашем случае.

$ kubectl журналы pi-wg6zp

Что интересно, в капсуле нет Прекращено он все еще очень активен, просто в нем нет запущенных приложений. Подобно тому, как просто включить компьютер и не использовать его. Если бы модуль был прерван, мы бы не смогли извлечь из него журналы, в первую очередь.

Чтобы очистить задание и все созданные поды, выполните команду:

$ kubectl delete -f мои-вакансии.ямл

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

Cron Вакансии

Cron Jobs похожи на утилиту Cron в Unix, которая периодически запускается в соответствии с желаемым расписанием. На момент написания этой статьи в Kubernetes это не было сверхстабильным, поэтому вы можете быть осторожны, используя. Процитируем официальные документы:

«Задание cron создает объект задания о один раз за время выполнения расписания. Мы говорим «о», потому что при определенных обстоятельствах могут быть созданы два рабочих места или не может быть создано ни одного рабочего места. Мы пытаемся сделать их редкими, но не предотвращаем их полностью. Следовательно, рабочие места должны быть идемпотент

Термин идемпотент означает, что задание Cron, выполняемое один или два раза или любое количество раз, будет иметь одинаковый эффект на систему. Проверка обновлений и мониторинг таких операций могут рассматриваться как идемпотентные. Но изменение данных или запись в базу данных не входят в число этих.

Давайте напишем задание cron, которое будет писать «Hello, World!»Сообщение в журналах вместе с отметкой времени, когда это сообщение было написано. Создайте файл my-cronjob.yaml и напишите в него следующее содержимое:

apiVersion: batch / v1beta1
вид: CronJob
метаданные:
имя: my-cronjob
спецификация:
расписание: "* / 1 * * * *"
jobTemplate:
спецификация:
шаблон:
спецификация:
контейнеры:
- имя: привет
изображение: busybox
аргументы:
- / bin / sh
- -c
- Дата; echo Hello из кластера Kubernetes
restartPolicy: OnFailure

График работы - самая важная. Он следует стандартному соглашению Cron, есть список чисел, разделенных пробелами. Пять чисел представляют,

  1. Минуты (0-59)
  2. Час (0-23)
  3. День месяца (1-31)
  4. Месяц (1-12)
  5. День недели (0-6), начиная с воскресенья

Использование звездочки (*) для поля означает любое доступное значение этого поля (например, подстановочный знак), а первая запись в нашем расписании «* / 1 * * * *» указывает, что задание должно выполняться каждую минуту независимо от часа, дня или месяца год. Использование * / 5 будет печатать сообщение каждые 5 минут.

Вы можете узнать больше о спецификации cronjob yaml в официальных документах. Давайте посмотрим, как работают все модули для работы, которую мы назвали my-cronjob.

$ kubectl получить поды
НАЗВАНИЕ ГОТОВ СОСТОЯНИЕ ВОЗРАСТ НАЗАД
my-cronjob-1534457100-hfhzf 0/1 Завершено 0 2 мес
my-cronjob-1534457160-gk85l 0/1 Завершено 0 1 мес
my-cronjob-1534457220-bj22x 0/1 Завершено 0 57сек

Копаясь в журналах каждого из модулей, вы обнаружите одно сообщение с меткой времени, поскольку все они были созданы в разное время, все они будут иметь разные метки времени.

Журнал $ kubectl my-cronjob-1534457100-hfhzf

Чтобы удалить задание cron, просто запустите:

$ kubectl delete -f my-cronjob.ямл

Это также приведет к удалению всех пакетов, которые были созданы в надлежащем порядке.

Рекомендации

Вы можете узнать больше о вакансиях Kubernetes здесь, а о вакансиях Cron вы можете посетить этот раздел их хорошо структурированной документации.

Как изменить направление прокрутки мыши и сенсорной панели в Windows 10
Мышь а также Сенсорная панельs не только упрощают вычисления, но и делают их более эффективными и требуют меньше времени. Мы не можем представить себе...
Как изменить указатель мыши и размер курсора, цвет и схему в Windows 10
Указатель мыши и курсор в Windows 10 - очень важные аспекты операционной системы. То же самое можно сказать и о других операционных системах, так что,...
Бесплатные движки с открытым исходным кодом для разработки игр для Linux
В этой статье будет рассмотрен список бесплатных игровых движков с открытым исходным кодом, которые можно использовать для разработки 2D- и 3D-игр в L...