Запуск Podʼів лише на деяких вузлах
Ця сторінка демонструє, як можна запускати Podʼи лише на деяких вузлах як частину DaemonSet
Перш ніж ви розпочнете
Вам треба мати кластер Kubernetes, а також інструмент командного рядка kubectl має бути налаштований для роботи з вашим кластером. Рекомендується виконувати ці настанови у кластері, що має щонайменше два вузли, які не виконують роль вузлів управління. Якщо у вас немає кластера, ви можете створити його, за допомогою minikube або використовувати одну з цих пісочниць:
Запуск Pod лише на деяких вузлах
Уявімо, що ви хочете запустити DaemonSet, але вам потрібно запускати ці Pod демонів лише на вузлах, які мають локальне SSD-сховище. Наприклад, Pod може надавати кеш-сервіс для вузла, і кеш корисний тільки тоді, коли доступне локальне сховище з низькою затримкою.
Крок 1: Додайте мітки до ваших вузлів
Додайте мітку ssd=true
до вузлів, які мають SSD.
kubectl label nodes example-node-1 example-node-2 ssd=true
Крок 2: Створіть маніфест
Створімо DaemonSet, який буде запускати Podʼи демонів тільки на вузлах з міткою SSD.
Використайте nodeSelector
, щоб забезпечити, що DaemonSet буде запускати Pod лише на вузлах з міткою ssd
, значення якої дорівнює "true"
.
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: ssd-driver
labels:
app: nginx
spec:
selector:
matchLabels:
app: ssd-driver-pod
template:
metadata:
labels:
app: ssd-driver-pod
spec:
nodeSelector:
ssd: "true"
containers:
- name: example-container
image: example-image
Крок 3: Створіть DaemonSet
Створіть DaemonSet з маніфесту, використовуючи kubectl create
або kubectl apply
.
Додамо мітку ще одному вузлу ssd=true
.
kubectl label nodes example-node-3 ssd=true
Додавання мітки вузлу автоматично запускає панель управління (конкретно, контролер DaemonSet), щоб запустити новий Pod для демона на цьому вузлі.
kubectl get pods -o wide
Вивід буде схожим на:
NAME READY STATUS RESTARTS AGE IP NODE
<daemonset-name><some-hash-01> 1/1 Running 0 13s ..... example-node-1
<daemonset-name><some-hash-02> 1/1 Running 0 13s ..... example-node-2
<daemonset-name><some-hash-03> 1/1 Running 0 5s ..... example-node-3