Запуск подов с помощью DaemonSet

KubernetesBeginner
Практиковаться сейчас

Введение

В Kubernetes объект DaemonSet — это тип контроллера, который гарантирует, что копия пода запущена на каждом узле кластера. В этой лабораторной работе вы научитесь создавать DaemonSet для автоматического развертывания реплик пода на всех узлах кластера.

Запуск кластера Minikube

Перед созданием ресурсов необходимо иметь работающий кластер Kubernetes. Minikube — это легковесная среда Kubernetes, которая запускается на вашей локальной машине.

  1. Перейдите в рабочую директорию:

    Откройте терминал и перейдите в папку проекта по умолчанию:

    cd /home/labex/project
    
  2. Запустите Minikube:

    Запустите Minikube для инициализации кластера Kubernetes:

    minikube start
    
    • Эта команда развернет одноузловой кластер Kubernetes на вашей локальной машине.
    • Запуск Minikube может занять несколько минут в зависимости от производительности вашей системы.
  3. Проверьте статус 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 для запуска реплик пода на каждом узле кластера.