Створення базового DaemonSet
Ця сторінка демонструє, як створити базовий DaemonSet, який запускає Pod на кожному вузлі в кластері Kubernetes. Вона охоплює простий випадок монтування файлу з хоста, запису його вмісту за допомогою контейнера ініціалізації та використання контейнера паузи.
Перш ніж ви розпочнете
Вам треба мати кластер Kubernetes, а також інструмент командного рядка kubectl має бути налаштований для роботи з вашим кластером. Рекомендується виконувати ці настанови у кластері, що має щонайменше два вузли, які не виконують роль вузлів управління. Якщо у вас немає кластера, ви можете створити його, за допомогою minikube або використовувати одну з цих пісочниць:
Кластер Kubernetes з принаймні двома вузлами (один вузол панелі управління та один робочий вузол), щоб продемонструвати поведінку DaemonSets.
Визначення DaemonSet
У цьому завданні створюється базовий DaemonSet, який забезпечує, що копія Pod запланована на кожному вузлі. Pod буде використовувати контейнер ініціалізації для читання та запису вмісту /etc/machine-id
з хосту, у той час, як основний контейнер буде контейнером pause
, який підтримує роботу Pod.
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: example-daemonset
spec:
selector:
matchLabels:
app.kubernetes.io/name: example
template:
metadata:
labels:
app.kubernetes.io/name: example
spec:
containers:
- name: pause
image: registry.k8s.io/pause
initContainers:
- name: log-machine-id
image: busybox:1.37
command: ['sh', '-c', 'cat /etc/machine-id > /var/log/machine-id.log']
volumeMounts:
- name: machine-id
mountPath: /etc/machine-id
readOnly: true
- name: log-dir
mountPath: /var/log
volumes:
- name: machine-id
hostPath:
path: /etc/machine-id
type: File
- name: log-dir
hostPath:
path: /var/log
Створіть DaemonSet на основі (YAML) маніфесту:
kubectl apply -f https://k8s.io/examples/application/basic-daemonset.yaml
Після застосування ви можете перевірити, що DaemonSet запускає Pod на кожному вузлі в кластері:
kubectl get pods -o wide
Вивід покаже один Pod на кожному вузлі, подібно до:
NAME READY STATUS RESTARTS AGE IP NODE example-daemonset-xxxxx 1/1 Running 0 5m x.x.x.x node-1 example-daemonset-yyyyy 1/1 Running 0 5m x.x.x.x node-2
Ви можете перевірити вміст записаного файлу
/etc/machine-id
, перевіривши теку журналів, змонтований з хоста:kubectl exec <pod-name> -- cat /var/log/machine-id.log
Де
<pod-name>
- це імʼя одного з ваших Pod.
Очищення
Щоб видалити DaemonSet, виконайте цю команду:
kubectl delete --cascade=foreground --ignore-not-found --now daemonsets/example-daemonset
Цей простий приклад DaemonSet вводить ключові компоненти, такі як контейнери ініціалізації та томи шляху хосту, які можна розширити для складніших випадків використання. Для отримання додаткової інформації зверніться до DaemonSet.