DaemonSets
Содержание
Понимание DaemonSetsСоздание DaemonSetsСоздание DaemonSet с помощью CLIПредварительные требованияПример YAML файлаСоздание DaemonSet через YAMLСоздание DaemonSet через веб-консольПредварительные требованияПроцедура — Настройка базовой информацииПроцедура — Настройка PodПроцедура — Настройка контейнеровПроцедура — СозданиеУправление DaemonSetsУправление DaemonSet с помощью CLIПросмотр DaemonSetОбновление DaemonSetУдаление DaemonSetУправление DaemonSet через веб-консольПросмотр DaemonSetОбновление DaemonSetУдаление DaemonSetПонимание DaemonSets
Обратитесь к официальной документации Kubernetes: DaemonSets
DaemonSet — это контроллер Kubernetes, который гарантирует, что на всех (или на подмножестве) узлов кластера запущена ровно одна копия указанного Pod. В отличие от Deployments, DaemonSets ориентированы на узлы, а не на приложения, что делает их идеальными для развертывания инфраструктурных сервисов по всему кластеру, таких как сборщики логов, агенты мониторинга или демоны хранения.
Операционные заметки по DaemonSet
-
Характеристики поведения
-
Распределение Pod: DaemonSet разворачивает ровно одну копию Pod на каждый планируемый Node, соответствующий его критериям:
- Разворачивает ровно одну копию Pod на каждый планируемый узел, который:
- Соответствует критериям
nodeSelectorилиnodeAffinity(если указаны). - Не находится в состоянии
NotReady. - Не имеет Taints
NoScheduleилиNoExecute, если только в Pod Template не настроены соответствующие Tolerations.
- Соответствует критериям
- Разворачивает ровно одну копию Pod на каждый планируемый узел, который:
-
Формула количества Pod: Количество Pod, управляемых DaemonSet, равно количеству подходящих узлов.
-
Обработка узлов с двойной ролью: Узлы, выполняющие одновременно роли Control Plane и Worker Node, будут запускать только одну копию Pod DaemonSet, независимо от их меток ролей, при условии, что они планируемы.
-
-
Ключевые ограничения (исключённые узлы)
- Узлы, явно помеченные как
Unschedulable: true(например, с помощьюkubectl cordon). - Узлы со статусом
NotReady. - Узлы с несовместимыми Taints, для которых в Pod Template DaemonSet не настроены соответствующие Tolerations.
- Узлы, явно помеченные как
Создание DaemonSets
Создание DaemonSet с помощью CLI
Предварительные требования
- Убедитесь, что
kubectlнастроен и подключён к вашему кластеру.
Пример YAML файла
Создание DaemonSet через YAML
Создание DaemonSet через веб-консоль
Предварительные требования
Получите адрес образа. Источником образов может быть репозиторий образов, интегрированный администратором платформы через toolchain, либо репозитории образов сторонних платформ.
-
В первом случае администратор обычно назначает репозиторий образов вашему проекту, и вы можете использовать образы из него. Если нужный репозиторий образов не найден, обратитесь к администратору для выделения.
-
Если это репозиторий образов сторонней платформы, убедитесь, что образы можно напрямую загрузить из него в текущем кластере.
-
Если для реестра образов требуется аутентификация, необходимо настроить соответствующий image pull secret. Подробнее см. Add ImagePullSecrets to ServiceAccount.
Процедура — Настройка базовой информации
-
В Container Platform перейдите в раздел Workloads > DaemonSets в левой боковой панели.
-
Нажмите Create DaemonSet.
-
Выберите или введите образ и нажмите Confirm.
Примечание: При использовании образов из репозитория, интегрированного в веб-консоль, можно фильтровать образы по категории Already Integrated. Integration Project Name, например, образы (registry-projectname), включает имя проекта projectname в этой веб-консоли и имя проекта containers в репозитории образов.
В разделе Basic Info настройте декларативные параметры для DaemonSet:
Процедура — Настройка Pod
Раздел Pod, см. Deployment - Configure Pod
Процедура — Настройка контейнеров
Раздел Containers, см. Deployment - Configure Containers
Процедура — Создание
Нажмите Create.
После нажатия Create DaemonSet:
-
✅ Автоматически развернёт копии Pod на всех подходящих узлах, соответствующих:
- критериям
nodeSelector(если определены). - настройкам
tolerations(позволяющим планировать Pod на узлах с taints). - узлам в состоянии
Readyи сSchedulable: true.
- критериям
-
❌ Исключённые узлы:
- Узлы с taint
NoSchedule(если явно не допускается). - Узлы, вручную заблокированные (
kubectl cordon). - Узлы в состояниях
NotReadyилиUnschedulable.
- Узлы с taint
Управление DaemonSets
Управление DaemonSet с помощью CLI
Просмотр DaemonSet
-
Получить сводку всех DaemonSet в namespace:
-
Получить подробную информацию о конкретном DaemonSet, включая события и статус Pod:
Обновление DaemonSet
При изменении Pod Template DaemonSet (например, смена образа контейнера или добавление volume mount) Kubernetes по умолчанию выполняет rolling update (если updateStrategy.type установлен в RollingUpdate, что является значением по умолчанию).
-
Сначала отредактируйте YAML файл (например,
example-daemonset.yaml) с нужными изменениями, затем примените его: -
Можно отслеживать прогресс rolling update:
Удаление DaemonSet
Для удаления DaemonSet и всех управляемых им Pod:
Управление DaemonSet через веб-консоль
Просмотр DaemonSet
- В Container Platform перейдите в Workloads > DaemonSets.
- Найдите нужный DaemonSet.
- Нажмите на имя DaemonSet для просмотра Details, Topology, Logs, Events, Monitoring и др.
Обновление DaemonSet
- В Container Platform перейдите в Workloads > DaemonSets.
- Найдите DaemonSet для обновления.
- В выпадающем меню Actions выберите Update, чтобы открыть страницу редактирования DaemonSet, где можно изменить
Replicas,image,updateStrategyи др.
Удаление DaemonSet
- В Container Platform перейдите в Workloads > DaemonSets.
- Найдите DaemonSet для удаления.
- В выпадающем меню Actions нажмите кнопку Delete в колонке операций и подтвердите.