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, или репозитории образов сторонних платформ.
-
В первом случае администратор обычно назначает репозиторий образов вашему проекту, и вы можете использовать образы из него. Если нужный репозиторий образов не найден, обратитесь к администратору для выделения.
-
Если это репозиторий образов сторонней платформы, убедитесь, что образы можно напрямую загрузить из него в текущем кластере.
Процедура — настройка базовой информации
-
В Container Platform перейдите в Workloads > DaemonSets в левой боковой панели.
-
Нажмите Create DaemonSet.
-
Выберите или введите образ и нажмите Confirm.
Примечание: При использовании образов из репозитория, интегрированного в веб-консоль, вы можете фильтровать образы по Already Integrated. Integration Project Name, например, образы (docker-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 в колонке операций и подтвердите.