Создание DaemonSet
DaemonSet обеспечивает запуск одного пода на всех или нескольких узлах. Когда узел добавляется в кластер, для узла также добавляется новый под. Когда узел удаляется из кластера, под переезжает на свободный узел. При удалении DaemonSet все созданные им поды будут удалены.
Типичные сценарии применения DaemonSet:
На каждом узле можно запустить daemon кластерного хранилища, например glusterd или Ceph.
На каждом узле можно запустить daemon сбора логов, например Fluentd или Logstash.
На каждом узле можно запустить daemon мониторинга, такой как Prometheus Node Exporter, collectd, Datadog agent, агент New Relic или Ganglia (gmond).
Вы можете развернуть DaemonSet для каждого типа daemons на всех узлах или несколько DaemonSets для одного типа daemons. Во втором случае DaemonSets имеют разные флаги и требования к памяти и CPU для разных типов оборудования.
Перед началом работы
Создайте кластер и проверьте, что он находится в статусе «Running».
Создание рабочей нагрузки в консоли ССЕ
Чтобы создать рабочую нагрузку:
Войдите в консоль управления Advanced:
В списке сервисов выберите Cloud Container Engine.
В консоли управления CCE выберите Clusters.
Нажмите на название созданного кластера.
В левом меню выберите Workloads.
Перейдите на вкладку DaemonSets.
Нажмите Create Workload.
Заполните поле Basic Info:
Параметр
Описание
Workload Type
Выберите тип рабочей нагрузки DaemonSets.
Workload Name
Укажите название рабочей нагрузки.
Namespace
Выберите пространство имен рабочей нагрузки.
По умолчанию — default. Чтобы создать новое, нажмите Create Namespace.
Time Zone Synchronization
Синхронизация времени. Позволяет контейнерам и узлам работать в одном часовом поясе. Эта функция зависит от локального диска, подключенного к контейнеру. Не изменяйте и не удаляйте часовой пояс.
Активируйте этот параметр при необходимости.
Cluster Name
Название кластера указано по умолчанию.
(Опционально) Description
Описание рабочей нагрузки.
Добавьте при необходимости.
Заполните поле Container Settings согласно таблице ниже. Чтобы настроить несколько контейнеров в поде, нажмите Add Container.
Параметр
Описание
Basic Info
Выполните базовые настройки контейнера.
Lifecycle
Настройте параметры жизненного цикла контейнера.
Health Check
Настройте Health Check контейнера.
Environment Variables
Настройте окружение.
Data Storage
Настройте хранение данных.
ПримечаниеЕсли рабочая нагрузка содержит больше одного пода, томы EVS не могут быть смонтированы.
Security Context
Защита системы и контейнеров от воздействия.
Чтобы установить разрешения контейнера и предотвратить воздействие на системы и другие контейнеры, введите ID-пользователя.
Logging
Настройте сбор логов контейнера.
Image Access Credential
Укажите учетные данные, используемые для доступа к хранилищу образов.
По умолчанию выбрано default-secret. Этот секрет можно использовать для доступа к образам в SWR. Чтобы создать новый, нажмите Create Secret.
GPU
Инстанс рабочей нагрузки будет запланирован для узла с указанным типом графической карты GPU.
По умолчанию — All.
Заполните параметры для создания сервиса в поле Service Settings.
Сервис (Service) используется для доступа к поду. Сервис с фиксированным IP-адресом перенаправляет трафик доступа к подам и выполняет балансировку нагрузки для этих подов.
Вы можете создать сервис после создания рабочей нагрузки.
Заполните поле Advanced Settings:
Параметр
Описание
Upgrade
Настройте политику обновления рабочей нагрузки.
Scheduling
Toleration
Настройте допуски.
Labels and Annotations
Настройте метки и аннотации.
DNS
Настройте DNS.
Нажмите Create Workload.
После успешного создания рабочая нагрузка появится со статусом «Running» на вкладке DaemonSets.
Создание рабочей нагрузки через kubectl
В этой инструкции описано, как создать рабочую нагрузку с помощью kubectl. В качестве примера используется Nginx.
Используйте kubectl для подключения к кластеру.
Создайте и измените файл nginx-daemonset.yaml.
«nginx-daemonset.yaml» — это пример названия файла.
vi nginx - daemonset . yamlПример YAML-файла:
apiVersion : apps / v1kind : DaemonSetmetadata :name : nginx - daemonsetlabels :app : nginx - daemonsetspec :selector :matchLabels :app : nginx - daemonsettemplate :metadata :labels :app : nginx - daemonsetspec :nodeSelector : # Node selection. A pod is created on a node only when the node meets daemon=need.daemon : needcontainers :- name : nginx - daemonsetimage : nginx : alpineresources :limits :cpu : 250 mmemory : 512 Mirequests :cpu : 250 mmemory : 512 MiimagePullSecrets :- name : default - secretПараметр replicas, используемый при определении Deployment или StatefulSet, не существует в приведенной выше конфигурации для DaemonSet, поскольку каждый узел имеет только одну реплику. Он является фиксированным.
Параметр nodeSelector определяет, что под создается только на узлах, которые удовлетворяют «daemon=need». Если вы хотите создать под на каждом узле, удалите эту метку.
Чтобы создать DaemonSet, введите:
kubectl create - f nginx - daemonset . yamlВ выводе команды появится:
daemonset . apps / nginx - daemonset createdЧтобы запросить статус DaemonSet, введите:
kubectl get dsВ выводе команды появится:
$ kubectl get dsNAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGEnginx-daemonset 1 1 0 1 0 daemon=need 116s
Если доступ к развертыванию будет осуществляться через сервисы ClusterIP или NodePort, добавьте соответствующий сервис. Подробнее об этом — в разделе Сети.
- Перед началом работы
- Создание рабочей нагрузки в консоли ССЕ
- Создание рабочей нагрузки через kubectl