У Kubernetes DaemonSet — це об'єкт, який гарантує запуск певного Pod’у на кожному вузлі (сервері) в кластері. Кожен вузол отримує один екземпляр цього Pod’у. Це корисно, якщо потрібно розгорнути один і той самий Pod на всіх або вибраних вузлах.
Мета DaemonSet полягає в тому, щоб забезпечити виконання різноманітних завдань, таких як розгортання інфраструктурних сервісів або збір даних з кожного вузла. Це особливо важливо для таких додатків, як агрегація логів або моніторинг, коли необхідно мати однаковий набір компонентів на всіх вузлах.
Коли варто використовувати DaemonSet?
- Для агентів збору логів (наприклад, Fluentd, Filebeat).
- Для агентів моніторингу (наприклад, Prometheus Node Exporter).
- Для специфічних компонентів системи, які повинні бути на кожному вузлі (наприклад, мережеві менеджери, плагіни для зберігання даних).
Приклад DaemonSet у Kubernetes може виглядати так: ми запускаємо Pod з образом busybox на кожному вузлі, і він постійно виводить повідомлення "Привіт, DaemonSet!".
yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: ornek-daemonset
labels:
app: ornek
spec:
selector:
matchLabels:
name: ornek
template:
metadata:
labels:
name: ornek
spec:
containers:
- name: busybox
image: busybox
command: ["/bin/sh", "-c", "while true; do echo Merhaba DaemonSet!; sleep 10; done"]
Цей механізм гарантує, що на кожному з вузлів кластера буде запущений под з відповідним образом і командою.
Щоб застосувати DaemonSet, потрібно виконати такі команди:
bash
kubectl apply -f daemonset.yaml
kubectl get pods -o wide
Ці команди дозволяють побачити, як Pod’и поширюються по всіх вузлах кластера.
Підсумок:
- DaemonSet дозволяє автоматично запускати один Pod на кожному вузлі.
- Використовується для компонентів, що повинні бути присутні на всіх вузлах.
- Якщо до кластеру додаються нові вузли, Pod автоматично розгортається і на них.
Перекладено з: kubernetes daemonSet