Введение
В Kubernetes объект DaemonSet — это тип контроллера, который гарантирует, что копия пода запущена на каждом узле кластера. В этой лабораторной работе вы научитесь создавать DaemonSet для автоматического развертывания реплик пода на всех узлах кластера.
Запуск кластера 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 для сброса среды.
Создание пода
Создайте простой под, который будет использоваться в качестве шаблона для реплик. Создайте файл /home/labex/project/myapp-pod.yaml со следующим содержимым:
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
spec:
containers:
- name: myapp-container
image: nginx
ports:
- containerPort: 80
Создайте под с помощью следующей команды:
kubectl apply -f /home/labex/project/myapp-pod.yaml
Создание DaemonSet
Создайте DaemonSet для запуска реплик myapp-pod на каждом узле кластера. Создайте файл /home/labex/project/myapp-daemonset.yaml со следующим содержимым:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: myapp-daemonset
spec:
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: nginx
ports:
- containerPort: 80
Этот DaemonSet использует myapp-pod в качестве шаблона для реплик и устанавливает селектор matchLabels в значение app: myapp, чтобы гарантировать создание реплик на каждом узле.
Создайте DaemonSet с помощью следующей команды:
kubectl apply -f /home/labex/project/myapp-daemonset.yaml
Проверка DaemonSet
Убедитесь, что DaemonSet был создан и что реплики myapp-pod запущены на каждом узле. Используйте следующую команду для вывода списка узлов в кластере:
kubectl get nodes
Используйте следующую команду для вывода списка подов, созданных DaemonSet:
kubectl get pods -l app=myapp
Вы должны увидеть по одному поду для каждого узла в кластере.
Обновление DaemonSet
Обновите DaemonSet, чтобы изменить образ, используемый в myapp-container. Создайте файл /home/labex/project/myapp-daemonset-update.yaml со следующим содержимым:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: myapp-daemonset
spec:
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: busybox
command: ["sleep", "3600"]
Этот обновленный DaemonSet меняет образ myapp-container на busybox и устанавливает команду sleep 3600.
Примените обновление DaemonSet с помощью следующей команды:
kubectl apply -f /home/labex/project/myapp-daemonset-update.yaml
Убедитесь, что DaemonSet был обновлен и реплики myapp-pod запущены с новым образом. Используйте следующую команду для проверки подов:
kubectl get pods -l app=myapp
Вы должны увидеть новые поды, созданные с обновленным образом.
Резюме
В этой лабораторной работе вы узнали, как использовать DaemonSet в Kubernetes для запуска реплик пода на каждом узле кластера.


