kubernetes DaemonSet

У 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