Введение
В Kubernetes DaemonSet представляет собой тип контроллера, который гарантирует запуск копии пода на каждом узле кластера. В этом лабораторном занятии (LabEx) вы узнаете, как создать 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 запущены с новым образом. Используйте следующую команду для вывода списка подов, созданных DaemonSet:
kubectl get pods -l app=myapp
Вы должны увидеть новые поды, созданные с обновленным образом.
Резюме
В этом практическом занятии вы научились использовать DaemonSet в Kubernetes для запуска реплик пода на каждом узле кластера.


