Ответ
Поле replicas в спецификации DaemonSet будет проигнорировано контроллером Kubernetes. DaemonSet предназначен для поддержания по одному экземпляру пода на каждом узле (или на каждом узле, соответствующем селектору), поэтому количество реплик определяется количеством подходящих узлов, а не этим полем.
Пример некорректного манифеста:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: nginx-daemonset
spec:
replicas: 2 # Это поле не имеет эффекта
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
Как это работает на практике:
- Контроллер DaemonSet вычисляет список узлов, соответствующих его селектору (или всем узлам, если селектор не задан).
- Для каждого подходящего узла он создает и поддерживает ровно один под, используя заданный шаблон (
spec.template). - Если добавить новый узел с соответствующими метками, DaemonSet автоматически развернет на нем под.
- Для управления количеством подов DaemonSet нужно работать с узлами: добавлять/удалять узлы или настраивать селекторы узлов через
nodeSelectorилиaffinityв спецификации пода.