Kubernetes Node Affinity: объяснение, Required vs Preferred, In и NotIn (практика)
Shubham gour
0:00 / 0:00
Kubernetes Node Affinity: объяснение, Required vs Preferred, In и NotIn (практика)
411 просмотров · 7 дн. назад
Shubham gour
5,48 тыс. подписчиков
411 просмотров · 7 дн. назад
Как убедиться, что Pod запускается только на нужном узле — например, на узле с SSD — и избегает использования тех, которые ему не нужны? В этом практическом руководстве по привязке узлов Kubernetes вы узнаете, как привязка узлов использует метки узлов для установки правил планирования для ваших Pod-ов, и как она выходит за рамки простого селектора узлов.
Мы начнем с основных понятий: что такое привязка узлов, requiredDuringSchedulingIgnoredDuringExecution и preferredDuringSchedulingIgnoredDuringExecution, а также идея антипривязки. Затем мы создадим кластер Minikube из 3 узлов, пометим узлы по типу диска, запланируем Pod на узле с SSD с помощью оператора In, не будем запускать другой Pod на этом узле с помощью оператора NotIn и удалим метку узла.
Что вы узнаете:
• Что такое привязка узлов — правила планирования, которые помогают Kubernetes выбирать подходящие узлы для ваших Pods
• Зачем нужна привязка узлов, если nodeSelector уже существует
• requiredDuringSchedulingIgnoredDuringExecution — жесткое правило; Отсутствие соответствующего узла означает, что Pod остается в состоянии ожидания.
• preferredDuringSchedulingIgnoredDuringExecution — мягкое предпочтение с резервным вариантом.
• Что означает «IgnoredDuringExecution», когда метка узла изменяется после планирования.
• Концепции антиаффинности: избегание узла с NotIn и распределение реплик с антиаффинностью Pod.
• Создание кластера Minikube из 3 узлов.
• Присвоение меток узлам с помощью kubectl label nodes (disk-type=ssd / disk-type=hdd) и их перечисление с помощью kubectl get nodes -L.
• Запись nodeAffinity → nodeSelectorTerms → matchExpressions с оператором In.
• Исправление ошибки «неизвестное поле», вызванной опечаткой в nodeSelectorTerms.
• Проверка размещения Pod с помощью kubectl get pods -o wide и kubectl describe pod.
• Удержание Pod вне узлов SSD с помощью NotIn. оператор
• Удаление метки узла с помощью kubectl
⏱️ Разделы
0:00 Введение: запуск Pod на нужном узле
0:54 Что такое привязка узлов?
1:50 Обязательные и предпочтительные параметры при планировании
3:53 Антиаффинность: NotIn и антиаффинность Pod
5:03 Кластер Minikube из 3 узлов
6:00 Пометка узлов
7:13 Pod с аффинностью узлов
10:32 Применение и проверка
12:14 Избегать узла с NotIn
14:49 Удаление метки
15:28 Итоги
📚 Ресурсы
• Документация Kubernetes – Назначение Pod'ов узлам (аффинность узлов): https://kubernetes.io/docs/concepts/s...
• Документация Kubernetes – Назначение Pod'ов узлам с использованием аффинности узлов: https://kubernetes.io/docs/tasks/conf...
• Документация Kubernetes – Метки и селекторы: https://kubernetes.io/docs/concepts/o...
▶️ Полный плейлист Kubernetes: • Kubernetes Tutorial for Beginners | Comple...
Новичок в планировании? Сначала посмотрите предыдущее видео о метках и допусках.
Если привязка узлов наконец-то стала понятной, подпишитесь на Shubham Gour Tech, чтобы получать больше практических руководств по Kubernetes и DevOps. Вы бы использовали обязательные или предпочтительные правила в своем кластере? Расскажите мне в комментариях.
#Kubernetes #NodeAffinity #KubernetesScheduling #DevOps #KubernetesTutorial