Создание daemonSets Kubernetes
Область применения: AKS в Azure Local 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 развертывает один тип управляющей программы на всех узлах, но можно управлять одним типом управляющей программы несколькими daemonSets с помощью разных меток. Метка 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: null
labels:
app: nginx
containers: null
name: nginx
image: nginx
Чтобы просмотреть текущее состояние daemonSet, используйте kubectl describe
команду (например, kubectl describe daemonset example-daemon
).
Ограничение daemonSet определенным узлам
По умолчанию DaemonSets создает модули pod на всех узлах кластера, но с селекторами узлов их можно настроить для создания модулей pod только в определенных узлах. Если вы хотите ограничить daemonSet определенными узлами, используйте kubectl label
команду.
Обновление daemonSet
С помощью kubectl edit ds<NAME>
команды можно обновить daemonSet. Однако рекомендуется изменить исходный файл конфигурации, а затем использовать kubectl apply
команду при первоначальном создании. После применения обновления можно просмотреть состояние обновления с помощью kubectl rollout status ds <daemonset-name>
команды.
Удаление daemonSet
Чтобы удалить daemonSet, используйте kubectl delete
команду (например, kubectl delete –f example-daemon.yaml -n monitoring
). При указании имени файла DaemonSet следует соблюдать осторожность, так как удаление daemonSet очищает все развернутые модули pod.