Обратитесь к официальной документации Kubernetes: DaemonSets
DaemonSet — это контроллер Kubernetes, который гарантирует, что на всех (или на подмножестве) узлов кластера запущена ровно одна копия указанного Pod. В отличие от Deployments, DaemonSets ориентированы на узлы, а не на приложения, что делает их идеальными для развертывания инфраструктурных сервисов по всему кластеру, таких как сборщики логов, агенты мониторинга или демоны хранения.
Операционные заметки по DaemonSet
Характеристики поведения
Распределение Pod: DaemonSet разворачивает ровно одну копию Pod на каждый планируемый Node, соответствующий его критериям:
nodeSelector
или nodeAffinity
(если указаны).NotReady
.NoSchedule
или NoExecute
, если только в Pod Template не настроены соответствующие Tolerations.Формула количества Pod: Количество Pod, управляемых DaemonSet, равно количеству подходящих узлов.
Обработка узлов с двойной ролью: Узлы, выполняющие одновременно роли Control Plane и Worker Node, будут запускать только один экземпляр Pod DaemonSet, независимо от их меток ролей, при условии, что они планируемы.
Основные ограничения (исключённые узлы)
Unschedulable: true
(например, через kubectl cordon
).NotReady
.kubectl
настроен и подключён к вашему кластеру.Получите адрес образа. Источником образов могут быть репозитории образов, интегрированные администратором платформы через toolchain, или репозитории образов сторонних платформ.
В первом случае администратор обычно назначает репозиторий образов вашему проекту, и вы можете использовать образы из него. Если нужный репозиторий образов не найден, обратитесь к администратору для выделения.
Если это репозиторий образов сторонней платформы, убедитесь, что образы можно напрямую загрузить из него в текущем кластере.
В Container Platform перейдите в Workloads > DaemonSets в левой боковой панели.
Нажмите Create DaemonSet.
Выберите или введите образ и нажмите Confirm.
Примечание: При использовании образов из репозитория, интегрированного в веб-консоль, вы можете фильтровать образы по Already Integrated. Integration Project Name, например, образы (docker-registry-projectname), где projectname — имя проекта в этой веб-консоли и имя проекта containers в репозитории образов.
В разделе Basic Info настройте декларативные параметры для DaemonSet:
Параметры | Описание |
---|---|
More > Update Strategy | Настраивает стратегию rollingUpdate для обновлений DaemonSet Pod без простоя. Max unavailable ( maxUnavailable ): Максимальное количество Pod, которые могут быть временно недоступны во время обновления. Принимает абсолютные значения (например, 1) или проценты (например, 10%). Пример: Если узлов 10 и maxUnavailable равен 10%, то floor(10 * 0.1) = 1 Pod может быть недоступен. Примечания:
|
Раздел Pod, см. Deployment - Configure Pod
Раздел Containers, см. Deployment - Configure Containers
Нажмите Create.
После нажатия Create DaemonSet:
✅ Автоматически развернёт копии Pod на всех подходящих узлах, которые соответствуют:
nodeSelector
(если определены).tolerations
(позволяющей планировать Pod на узлах с taints).Ready
и Schedulable: true
.❌ Исключённые узлы:
NoSchedule
(если явно не допускается).kubectl cordon
).NotReady
или Unschedulable
.Для получения списка всех DaemonSet в namespace:
Для получения подробной информации о конкретном DaemonSet, включая события и статус Pod:
При изменении Pod Template DaemonSet (например, смена образа контейнера или добавление volume mount) Kubernetes по умолчанию выполняет rolling update (если updateStrategy.type
установлен в RollingUpdate
, что является значением по умолчанию).
Сначала отредактируйте YAML файл (например, example-daemonset.yaml
) с нужными изменениями, затем примените его:
Можно отслеживать прогресс rolling update:
Для удаления DaemonSet и всех управляемых им Pod:
Replicas
, image
, updateStrategy
и др.