Создание наборов daemonSet для Kubernetes

Область применения: AKS в Azure Stack HCI 22H2, AKS в Windows Server

В этой статье описывается, как создать и использовать DaemonSet Kubernetes в AKS, включенном Azure Arc, чтобы гарантировать, что копия модуля pod всегда доступна на каждом рабочем узле в кластере. DaemonSet можно использовать для повышения производительности кластера, гарантируя, что приложение выполняется на всех рабочих узлах, а также для развертывания модулей pod, которые выполняют обслуживание и предоставляют службы поддержки для узлов.

Обзор daemonSets

DaemonSet — это объект Kubernetes, который гарантирует, что копия модуля pod, определенного в конфигурации, всегда будет доступна на каждом рабочем узле в кластере. При добавлении нового узла в кластер DaemonSet автоматически выделяет модуль pod на этом узле.

Аналогичным образом, при удалении узла модуль pod, работающий на узле, также удаляется и не переносится на другой узел (например, как это происходит с Наборами реплик). Это позволяет преодолеть ограничения планирования Kubernetes и убедиться, что конкретное приложение развернуто на всех узлах в кластере.

DaemonSets может повысить общую производительность кластера. Например, их можно использовать для развертывания модулей pod для выполнения задач обслуживания и поддержки на каждом узле:

  • Запустите управляемую программу сбора журналов, например Fluentd и Logstash.
  • Запустите управляемую программу мониторинга узла, например Prometheus.
  • Запустите управляемую программу хранилища кластера, например glusterd или ceph.

Хотя DaemonSets по умолчанию создают pod на каждом узле, вы можете ограничить количество допустимых узлов, предварительно определив поле селектора узлов в файле YAML. Контроллер DaemonSet создает модули pod только на узлах, соответствующих селектору узлов.

Как правило, один набор DaemonSet развертывает один тип управляющей программы на всех узлах, но можно иметь несколько наборов DaemonSet для управления одним типом управляющей программы с помощью разных меток. Метка Kubernetes определяет правила развертывания на основе характеристик отдельных узлов.

Дополнительные сведения об использовании DaemonSets см. в разделе Kubernetes DaemonSets.

Создание набора daemonSet

Вы описываете DaemonSet с помощью файла YAML, а затем создаете kubectl create его с помощью команд или kubectl apply (например, kubectl create –f example-daemon.yaml).

В следующем примере описываются функции файла конфигурации DaemonSet с использованием образа nginx:

apiVersion: apps/v1  
kind: DaemonSet  
metadata: 
      labels: 
         app: nginx
      name: example-daemon
spec:  
  template:
    metadata:
    labels:
             app: nginx
          spec:  
    containers:  
        -name: nginx  
         image: nginx

Чтобы просмотреть текущее состояние DaemonSet, используйте kubectl describe команду (например, kubectl describe daemonset example-daemon).

Ограничение DaemonSet определенными узлами

По умолчанию DaemonSets создают модули pod на всех узлах в кластере, но с помощью селекторов узлов их можно настроить для создания модулей pod только на определенных узлах. Если вы хотите ограничить DaemonSet определенными узлами, используйте kubectl label команду .

Обновление daemonSet

Вы можете обновить DaemonSet с помощью kubectl edit ds<NAME> команды . Однако рекомендуется изменить исходный файл конфигурации, а затем использовать kubectl apply команду при его создании. После применения обновления можно просмотреть состояние обновления с помощью kubectl rollout status ds <daemonset-name> команды .

Удаление набора daemonSet

Чтобы удалить DaemonSet, используйте kubectl delete команду (например, kubectl delete –f example-daemon.yaml -n monitoring). При указании имени файла DaemonSet следует соблюдать осторожность, так как при удалении DaemonSet удаляются все развернутые модули pod.

Дальнейшие действия