DaemonSet — это тип рабочей нагрузки Kubernetes, который гарантирует, что pod работает на всех или выбранных узлах кластера. Когда в кластер добавляется новый узел, контроллер DaemonSet автоматически создает pod на узле. И наоборот, при удалении узла его pod'ы удаляются.
DaemonSet'ы идеальны для поддержания согласованных сервисов в кластере. Распространённые сценарии применения включают:
Параметр | Описание |
|---|---|
Workload Type | Выберите DaemonSet. Для получения подробной информации о различных типах рабочих нагрузок см. Workload Overview. |
Workload Name | Введите имя для рабочей нагрузки. Введите от 1 до 63 символов, начиная со строчной буквы и заканчивая строчной буквой или цифрой. Разрешены только строчные буквы, цифры и дефисы (-). |
Namespace | Выберите пространство имён для рабочей нагрузки. Значение по умолчанию — default. Вы также можете нажать Create Namespace, чтобы создать его. Для получения подробной информации см. Creating a Namespace. |
Container Runtime | Кластер CCE стандартного типа использует общий runtime по умолчанию, тогда как кластер CCE Turbo поддерживает как общий, так и защищённый runtime. Для получения подробной информации об их различиях см. Secure Runtime and Common Runtime. |
Time Zone Synchronization | Настройте, включить ли синхронизацию часового пояса. После включения этой функции контейнер и узел будут использовать один и тот же часовой пояс. Синхронизация часового пояса опирается на локальный диск, смонтированный в контейнер. Не изменяйте и не удаляйте локальный диск. Для получения подробной информации см. Configuring Time Zone Synchronization. |
Если вы настроили несколько контейнеров для pod, убедитесь, что порты, используемые каждым контейнером, не конфликтуют друг с другом, иначе рабочая нагрузка не может быть развернута.
Parameter | Описание |
|---|---|
Container Name | Введите имя для контейнера. |
Pull Policy | Политика обновления или получения образа. Если вы выбираете Always, образ загружается из image repository каждый раз. Если вы не выбираете Always, предпочтительно используется существующий образ узла. Если образ не существует, образ загружается из image repository. |
Image Name | Нажмите Select Image и выберите образ, используемый контейнером. Чтобы использовать сторонний образ, непосредственно введите путь к образу. Убедитесь, что image access credential может использоваться для доступа к image repository. Подробнее см. Using Third-Party Images. |
Image Tag | Выберите тег образа для развертывания. |
CPU Quota |
Если Request и Limit не указаны, квота не ограничивается. Для получения дополнительной информации и рекомендаций по Request и Limit см. Configuring Container Specifications. |
Memory Quota |
Если Request и Limit не указаны, квота не ограничивается. Для получения дополнительной информации и рекомендаций по Request и Limit см. Configuring Container Specifications. |
(Optional) GPU Quota | Настраивается только при наличии в кластере узлов GPU и установленного дополнения CCE AI Suite (NVIDIA GPU).
Подробности о том, как использовать GPU в кластере, см. Default GPU Scheduling in Kubernetes. |
(Optional) Privileged Container | Программы в привилегированном контейнере обладают определёнными привилегиями. Если эта опция включена, контейнер получит привилегии. Например, привилегированные контейнеры могут управлять сетевыми устройствами хост‑машины, изменять параметры ядра, получать доступ ко всем устройствам узла. Для получения дополнительной информации см. Pod Security Standards. |
(Optional) Init Container | Определяет, использовать ли контейнер в качестве init‑контейнера. Init‑контейнер не поддерживает проверку состояния. Init‑контейнер — это специальный контейнер, который запускается до запуска остальных контейнеров приложений в pod. Каждый pod может содержать несколько контейнеров. Кроме того, pod может включать один или несколько init‑контейнеров. Контейнеры приложений в pod запускаются и работают только после завершения работы всех init‑контейнеров. Подробности см. в Init Containers. |
(Optional) Run Option | Добавьте параметры запуска для контейнера. Подробнее см. Pod. CCE поддерживает следующие параметры запуска:
|
Чтобы отключить сбор журналов стандартного вывода текущей рабочей нагрузки, добавьте аннотацию kubernetes.AOM.log.stdout: [] в Labels and Annotations в разделе Advanced Settings. Подробнее о том, как использовать эту аннотацию, см. Table 1.
Service обеспечивает внешний доступ к pod‑ам. При статическом IP‑адресе Service перенаправляет входящий трафик к pod‑ам и автоматически балансирует нагрузку для этих pod‑ов.
Вы также можете создать Service после создания workload. Для получения подробной информации о Service разных типов см. Service Overview.
Parameter | Description |
|---|---|
Upgrade | Укажите режим обновления и параметры workload. Rolling upgrade и Replace upgrade доступны. Для получения подробной информации см. Upgrading and Rolling Back a Workload. |
Scheduling | Настройте политики аффинити и анти‑аффинити для гибкого планирования workload. Предоставляется node affinity.
|
Toleration | Использование как taints, так и tolerations позволяет (не принудительно) планировать pod на узел с соответствующими taints и управлять политиками выселения pod после того, как узел, где находится pod, будет помечен taint. Для получения подробной информации см. Configuring Tolerance Policies. |
Метки и Аннотации | Добавьте метки или аннотации для pod, используя пары ключ‑значение. После настройки нажмите Confirm. Для получения подробной информации о метках и аннотациях см. Configuring Labels and Annotations. |
DNS | Настройте отдельную политику DNS для рабочей нагрузки. Для получения подробной информации см. DNS Configuration. |
Сетевые настройки |
|
В следующей процедуре в качестве примера используется Nginx, чтобы описать, как create a workload using kubectl.
vi nginx-daemonset.yaml
Ниже показано содержимое файла описания. Это лишь пример. Для получения подробной информации о DaemonSets см. Kubernetes official documentation.
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: 250mmemory: 512Mirequests:cpu: 250mmemory: 512MiimagePullSecrets:- name: default-secret
Параметр replicas, используемый при определении Deployment или StatefulSet, отсутствует в приведённой выше конфигурации DaemonSet, поскольку на каждом узле имеется только одна реплика. Он фиксирован.
Параметр nodeSelector в предыдущем шаблоне pod указывает, что pod создаётся только на узлах, соответствующих daemon=need. Если необходимо создать pod на каждом узле, удалите метку.
kubectl create -f nginx-daemonset.yaml
Если отображается следующая информация, DaemonSet создаётся.
daemonset.apps/nginx-daemonset created
kubectl get ds
Вывод команды:
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGEnginx-daemonset 1 1 0 1 0 daemon=need 116s