DaemonSet — это тип рабочей нагрузки Kubernetes, который гарантирует, что pod работает на всех или выбранных узлах в кластере. Когда в кластер добавляется новый узел, контроллер DaemonSet автоматически создает pod на узле. И наоборот, когда узел удаляется, его pod удаляются.
DaemonSets идеальны для поддержания согласованных сервисов во всем кластере. Распространённые сценарии применения включают:
Параметр | Описание |
|---|---|
Тип нагрузки | Выберите DaemonSet. Для получения подробной информации о различных типах нагрузок см. Workload Overview. |
Имя нагрузки | Введите имя нагрузки. Введите от 1 до 63 символов, начинающихся со строчной буквы и заканчивающихся строчной буквой или цифрой. Разрешены только строчные буквы, цифры и дефисы (-). |
Пространство имён | Выберите пространство имён для нагрузки. Значение по умолчанию — default. Вы также можете нажать Create Namespace, чтобы создать его. Для получения подробной информации см. Creating a Namespace. |
Среда выполнения контейнера | Кластер CCE стандартный использует общую среду выполнения по умолчанию, тогда как кластер CCE Turbo поддерживает как общие, так и защищённые среды выполнения. Для получения подробной информации об их различиях см. Secure Runtime and Common Runtime. |
Синхронизация часового пояса | Настройте, включать ли синхронизацию часового пояса. После включения этой функции контейнер и узел будут использовать один и тот же часовой пояс. Синхронизация часового пояса опирается на локальный диск, смонтированный в контейнер. Не изменяйте и не удаляйте локальный диск. Для получения подробной информации см. Configuring Time Zone Synchronization. |
Если вы настроили несколько контейнеров для pod, убедитесь, что порты, используемые каждым контейнером, не конфликтуют друг с другом, иначе нагрузка не может быть развернута.
Параметр | Описание |
|---|---|
Имя контейнера | Введите имя контейнера. |
Политика получения | Политика обновления или получения образа. Если вы выбираете Always, образ загружается из репозитория образов каждый раз. Если вы не выбираете Always, предпочтительно используется существующий образ узла. Если образ отсутствует, он загружается из репозитория образов. |
Имя образа | Нажмите Select Image и выберите образ, используемый контейнером. Чтобы использовать сторонний образ, непосредственно введите путь к образу. Убедитесь, что image access credential может использоваться для доступа к репозиторию образов. Подробности см. в Using Third-Party Images. |
Тег образа | Выберите тег образа для развертывания. |
Квота CPU |
Если Request и Limit не указаны, квота не ограничивается. Для получения дополнительной информации и рекомендаций по Request и Limit см. Configuring Container Specifications. |
Квота памяти |
Если Request и Limit не указаны, квота не ограничивается. Для получения дополнительной информации и рекомендаций по Request и Limit см. Configuring Container Specifications. |
(Необязательно) GPU Quota | Настраивается только при наличии в кластере узлов GPU и установленного дополнения CCE AI Suite (NVIDIA GPU).
Подробности о том, как использовать GPU в кластере, см. Default GPU Scheduling in Kubernetes. |
(Необязательно) Privileged Container | Программы в privileged container имеют определённые привилегии. Если эта опция включена, контейнеру будут предоставлены привилегии. Например, privileged контейнеры могут управлять сетевыми устройствами на хост‑машине, изменять параметры ядра, получать доступ ко всем устройствам узла. Для получения дополнительной информации см. Pod Security Standards. |
(Необязательно) Init Container | Определяет, использовать ли контейнер в качестве init container. Init container не поддерживает проверку состояния. Init container — это специальный контейнер, который запускается до того, как будут запущены другие контейнеры приложений в pod. Каждый pod может содержать несколько контейнеров. Кроме того, pod может содержать один или несколько init containers. Контейнеры приложений в pod запускаются и работают только после завершения работы всех init containers. Подробности см. в Init Containers. |
(Optional) Run Option | Добавьте параметры запуска для контейнера. Подробнее см. Pod. CCE поддерживает следующие параметры запуска:
|
Чтобы отключить сбор журналов стандартного вывода текущей рабочей нагрузки, добавьте аннотацию kubernetes.AOM.log.stdout: [] в Labels and Annotations в разделе Advanced Settings. Подробнее о том, как использовать эту аннотацию, см. Table 1.
Сервис обеспечивает внешний доступ к pod‑ам. При наличии статического IP‑адреса Service перенаправляет трафик доступа к pod‑ам и автоматически балансирует нагрузку для этих pod‑ов.
Вы также можете создать Service после создания рабочей нагрузки. Для получения подробной информации о Service разных типов см. Service Overview.
Parameter | Description |
|---|---|
Upgrade | Укажите режим обновления и параметры рабочей нагрузки. Rolling upgrade и Replace upgrade доступны. Подробную информацию см. в Upgrading and Rolling Back a Workload. |
Scheduling | Настройте политики аффинности и анти‑аффинности для гибкого планирования рабочей нагрузки. Предоставляется node affinity.
|
Toleration | Использование как taints, так и tolerations позволяет (не принудительно) планировать pod на узел с соответствующими taints и управлять политиками выселения pod после того, как узел, где находится pod, будет помечен taint. Для получения подробной информации см. Configuring Tolerance Policies. |
Labels and Annotations | Добавьте метки или аннотации для pod, используя пары ключ‑значение. После настройки нажмите Confirm. Для получения подробной информации о метках и аннотациях см. Configuring Labels and Annotations. |
DNS | Настройте отдельную политику DNS для рабочей нагрузки. Для получения подробной информации см. DNS Configuration. |
Network 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