Введение
В этом лабораторном занятии мы начнем с создания простого развертывания (deployment), а затем присвоим ему селекторы узлов (Node Selectors). Затем перейдем к более сложным сценариям, где будем использовать различные селекторы для планирования пода (pod) на определенных узлах.
Запустите кластер Minikube
Перед созданием ресурсов вам нужен работающий кластер Kubernetes. Minikube - это легковесная среда Kubernetes, которая запускается на вашем локальном компьютере.
Перейдите в рабочую директорию:
Откройте терминал и перейдите в папку проекта по умолчанию:
cd /home/labex/projectЗапустите Minikube:
Запустите Minikube для инициализации кластера Kubernetes:
minikube start- Эта команда настраивает однокузловой кластер Kubernetes на вашем локальном компьютере.
- В зависимости от производительности вашей системы Minikube может потребовать несколько минут для запуска.
Проверьте, что Minikube запущен:
Проверьте статус кластера Minikube:
minikube status- Проверьте, чтобы компоненты, такие как
kubeletиapiserver, были перечислены какRunning(работающие). - Если кластер не запущен, запустите команду
minikube startснова.
- Проверьте, чтобы компоненты, такие как
Если у вас возникли проблемы при запуске Minikube, используйте команду minikube delete для сброса среды при необходимости.
Создание простого развертывания (Deployment)
На этом шаге мы создадим простое развертывание с одним подом (pod).
- Создайте файл с именем
simple-deployment.yamlсо следующим содержимым:
apiVersion: apps/v1
kind: Deployment
metadata:
name: simple-deployment
spec:
replicas: 1
selector:
matchLabels:
app: simple-app
template:
metadata:
labels:
app: simple-app
spec:
containers:
- name: simple-container
image: nginx:latest
- Используйте
kubectlдля создания развертывания:
kubectl apply -f simple-deployment.yaml
- Проверьте, что развертывание было создано:
kubectl get deployments
Назначение селекторов узлов (Node Selectors) развертыванию (Deployment)
На этом шаге мы назначим селектор узла (Node Selector) для развертывания, которое мы создали на шаге 1.
- Создайте узлы с меткой (label):
kubectl label nodes minikube disk=ssd
- Отредактируйте файл
node-selector-deployment.yamlи добавьте полеnodeSelectorв разделspec.template.spec:
apiVersion: apps/v1
kind: Deployment
metadata:
name: selector-deployment
spec:
replicas: 1
selector:
matchLabels:
app: selector-app
template:
metadata:
labels:
app: selector-app
spec:
nodeSelector:
disk: ssd
containers:
- name: selector-container
image: nginx:latest
- Используйте
kubectlдля применения изменений:
kubectl apply -f node-selector-deployment.yaml
- Проверьте, что под (pod) был запланирован на узле с меткой
disk=ssd:
kubectl get pods -o wide | grep selector-deployment
Использование различных селекторов узлов (Node Selectors)
На этом шаге мы будем использовать различные селекторы узлов (Node Selectors) для планирования подов (pods) на определенных узлах на основе меток (labels), назначенных этим узлам.
- Создайте три узла с разными метками:
kubectl label nodes minikube resigon=labex
kubectl label nodes minikube gpu=true
- Создайте файл с именем
multi-selector-deployment.yamlсо следующим содержимым:
apiVersion: apps/v1
kind: Deployment
metadata:
name: multi-selector-deployment
spec:
replicas: 3
selector:
matchLabels:
app: multi-selector-app
template:
metadata:
labels:
app: multi-selector-app
spec:
containers:
- name: multi-selector-container
image: nginx:latest
nodeSelector:
resigon: labex
gpu: "true"
- Примените изменения:
kubectl apply -f multi-selector-deployment.yaml
- Проверьте, что поды были запланированы на узлах с соответствующими метками:
kubectl get pods -o wide | grep multi-selector-deployment
Резюме
В этом практическом занятии (лабораторной работе) мы научились планировать поды (pods) на определенных узлах с использованием селекторов узлов (Node Selectors) и афинитета узлов (Node Affinity). Мы начали с простого развертывания (deployment), а затем перешли к более сложным сценариям, где использовали различные селекторы и правила афинитета для планирования подов на определенных узлах на основе меток (labels), назначенных этим узлам.
Поздравляем! Вы успешно завершили это практическое занятие.


