DaemonSet описывает нагрузку, которая должна присутствовать на каждом подходящем узле кластера. Это удобно для задач, привязанных к конкретной машине: сбора её журналов, наблюдения за узлом или работы сетевого компонента. Число Pod получается из набора узлов, где такая нагрузка должна работать, а не из общего параметра replicas.
Представьте четыре рабочие машины. Если сборщик журналов нужен на всех четырёх, DaemonSet поддерживает соответствующее размещение. При появлении пятой подходящей машины контроллер создаёт для неё ещё один Pod. У Deployment с числом реплик 4 другая цель: обеспечить четыре экземпляра приложения. Само это число не сообщает, что на каждой машине должна находиться ровно одна копия.
Необязательно охватывать весь кластер. Условия nodeSelector или node affinity позволяют выбрать нужную группу узлов. При анализе фактического результата учитывают и другие правила размещения, включая taints и tolerations, доступные ресурсы и состояние контейнеров. Поэтому отсутствие работающего агента на машине следует разбирать по событиям, а не считать невозможным из-за самого слова DaemonSet.
Шаблон Pod задаёт, какой контейнер запускать и какие ресурсы ему нужны. Как и другие нагрузки, агент может завершаться из-за ошибки программы или конфигурации. Контроллер поддерживает размещение, но не исправляет произвольный код. Для приложения, которому нужно несколько взаимозаменяемых экземпляров ради обработки пользовательских запросов, обычно начинают с Deployment. Для узлового агента сначала определяют, на каких машинах он обязан присутствовать, и затем описывают эту область DaemonSet.
Ответить на вопрос