Запуск подов с использованием DaemonSet

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В Kubernetes DaemonSet представляет собой тип контроллера, который гарантирует запуск копии пода на каждом узле кластера. В этом лабораторном занятии (LabEx) вы узнаете, как создать DaemonSet для запуска реплик пода на каждом узле кластера.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/BasicsGroup(["Basics"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedCommandsGroup(["Advanced Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("Initialization") kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/create("Create") kubernetes/AdvancedCommandsGroup -.-> kubernetes/apply("Apply") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") subgraph Lab Skills kubernetes/initialization -.-> lab-8454{{"Запуск подов с использованием DaemonSet"}} kubernetes/get -.-> lab-8454{{"Запуск подов с использованием DaemonSet"}} kubernetes/create -.-> lab-8454{{"Запуск подов с использованием DaemonSet"}} kubernetes/apply -.-> lab-8454{{"Запуск подов с использованием DaemonSet"}} kubernetes/describe -.-> lab-8454{{"Запуск подов с использованием DaemonSet"}} end

Запуск кластера 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 запущены с новым образом. Используйте следующую команду для вывода списка подов, созданных DaemonSet:

kubectl get pods -l app=myapp

Вы должны увидеть новые поды, созданные с обновленным образом.

Итог

В этом практическом занятии вы научились использовать DaemonSet в Kubernetes для запуска реплик пода на каждом узле кластера.