# Ресурсы рабочей нагрузки

LLMS index: [llms.txt](/llms.txt)

---

Kubernetes предоставляет несколько встроенных API для декларативного управления
<a class='glossary-tooltip' title='Рабочая нагрузка — это приложение, работающее в Kubernetes.' data-bs-toggle='tooltip' data-bs-placement='top' href='/ru/docs/concepts/workloads/' target='_blank' aria-label='рабочими нагрузками'>рабочими нагрузками</a>
и их компонентами.

В конечном счете, приложения работают в качестве контейнеров внутри
<a class='glossary-tooltip' title='Самый маленький и простой объект в Kubernetes. Под — это набор запущенных контейнеров в кластере.' data-bs-toggle='tooltip' data-bs-placement='top' href='/ru/docs/concepts/workloads/pods/pod-overview/' target='_blank' aria-label='подов'>подов</a>, однако управление каждым подом по отдельности требует больших усилий.
Например, если под выходит из строя, вам, вероятно, надо будет
запустить новый под, чтобы заменить его. Kubernetes может сделать это за вас.

С помощью Kubernetes API можно создавать
<a class='glossary-tooltip' title='Сущность в системе Kubernetes, представляющая часть состояния кластера.' data-bs-toggle='tooltip' data-bs-placement='top' href='/ru/docs/concepts/overview/working-with-objects/' target='_blank' aria-label='объект'>объект</a> рабочей нагрузки на более высоком уровне абстракции, чем под, а затем уже <a class='glossary-tooltip' title='Уровень оркестрации контейнеров, предоставляющий API и интерфейсы для определения, развёртывания и управления жизненным циклом контейнеров.' data-bs-toggle='tooltip' data-bs-placement='top' href='/ru/docs/reference/glossary/?all=true#term-control-plane' target='_blank' aria-label='слой управления'>слой управления</a> Kubernetes
будет автоматически управлять подами, руководствуясь спецификацией этого объекта.

Встроенные API для управления рабочими нагрузками: 

Деплоймент ([Deployment](/docs/concepts/workloads/controllers/deployment/)) (и, косвенно, [ReplicaSet](/docs/concepts/workloads/controllers/replicaset/)) — это наиболее распространенный способ запуска приложения в кластере.
Deployment хорошо подходит для управления неизменной (stateless) рабочей нагрузкой в кластере, где
любой под в деплойменте не содержит изменяемых данных и может быть заменен при необходимости
(Deployments — замена устаревшего ресурса
<a class='glossary-tooltip' title='A (deprecated) API object that manages a replicated application.' data-bs-toggle='tooltip' data-bs-placement='top' href='/ru/docs/reference/glossary/?all=true#term-replication-controller' target='_blank' aria-label='ReplicationController'>ReplicationController</a> API).

[StatefulSet](/docs/concepts/workloads/controllers/statefulset/) позволяет управлять одним или несколькими подами,
в которых работает одно и то же приложение, для случаев, когда все эти поды требуют четкой идентичности (т.е. являются stateful).
Это отличается от деплоймента, в котором предполагается, что поды могут быть взаимозаменяемыми.
Наиболее распространенное использование StatefulSet — возможность установить
связь между его подами и их постоянным хранилищем (persistent storage).
Например, можно запустить StatefulSet, который связывает каждый под с [PersistentVolume](/docs/concepts/storage/persistent-volumes/). Если один из подов в StatefulSet выходит из строя,
Kubernetes создает заменяющий под, подключенный к тому же PersistentVolume.

[DaemonSet](/docs/concepts/workloads/controllers/daemonset/) создает поды, которые предоставляют локальные инструменты для
<a class='glossary-tooltip' title='Узел — рабочая машина в Kubernetes.' data-bs-toggle='tooltip' data-bs-placement='top' href='/ru/docs/concepts/architecture/nodes/' target='_blank' aria-label='узлов'>узлов</a>;
пример — драйвер, который позволяет контейнерам на узле получить доступ к системе хранения.
DaemonSet используется, когда драйвер или сервис должен быть запущен на определенном узле.
Каждый под в DaemonSet выполняет роль, аналогичную системному демону на классическом сервере Unix/POSIX.
DaemonSet может иметь основополагающее значение для работы кластера,
например, для плагина, позволяющего узлу получить доступ к
[сети кластера](/ru/docs/concepts/cluster-administration/networking/#реализация-сетевой-модели-kubernetes).
Он может помочь управлять узлом или предоставить менее важные функции,
улучшающие работу используемой контейнерной платформы. 
DaemonSet'ы (и их поды) можно запускать на каждом узле кластера или только на некоторых из них
(например, можно установить драйвер ускорителя GPU только на узлах, на которых установлен GPU).

[Job](/docs/concepts/workloads/controllers/job/) и/или
[CronJob](/docs/concepts/workloads/controllers/cron-jobs/) используются, чтобы определять задачи,
которые выполняются по отдельному запуску до их завершения, а затем останавливаются. Job представляет собой разовую задачу,
тогда как CronJob повторяется по расписанию. 

Другие темы в этом разделе:
<!-- relies on simple_list: true in the front matter -->

---

Section pages:

- [DaemonSet](/ru/docs/concepts/workloads/controllers/daemonset/): DaemonSet определяет Поды, предоставляющие локальные для узла возможности. Они могут быть критически важны для работы кластера, например, в роли вспомогательного сетевого инструмента или как часть дополнения.
- [CronJob](/ru/docs/concepts/workloads/controllers/cron-jobs/): CronJob запускает одноразовые задания по повторяющемуся расписанию
