Масштабирование и управление подами (Pods) с использованием развертываний (Deployments)

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

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

Введение

В этом лабораторном занятии (lab) вы научитесь масштабировать и управлять подами (Pods) с использованием развертываний (Deployments) в Kubernetes. Развертывания (Deployments) представляют собой более высокоуровневую абстракцию, которая позволяет декларативно управлять и масштабировать наборы реплик подов (Pods). Используя развертывания (Deployments), вы можете легко обновить свое приложение до новой версии, вернуться к предыдущей версии и масштабировать свое приложение вверх или вниз, чтобы удовлетворить меняющиеся потребности.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedCommandsGroup(["Advanced Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicsGroup(["Basics"]) kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedDeploymentGroup(["Advanced Deployment"]) kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("Initialization") kubernetes/BasicCommandsGroup -.-> kubernetes/get("Get") kubernetes/BasicCommandsGroup -.-> kubernetes/create("Create") kubernetes/BasicCommandsGroup -.-> kubernetes/delete("Delete") kubernetes/BasicCommandsGroup -.-> kubernetes/edit("Edit") kubernetes/AdvancedCommandsGroup -.-> kubernetes/apply("Apply") kubernetes/AdvancedDeploymentGroup -.-> kubernetes/rollout("Rollout") kubernetes/AdvancedDeploymentGroup -.-> kubernetes/scale("Scale") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") subgraph Lab Skills kubernetes/initialization -.-> lab-9675{{"Масштабирование и управление подами (Pods) с использованием развертываний (Deployments)"}} kubernetes/get -.-> lab-9675{{"Масштабирование и управление подами (Pods) с использованием развертываний (Deployments)"}} kubernetes/create -.-> lab-9675{{"Масштабирование и управление подами (Pods) с использованием развертываний (Deployments)"}} kubernetes/delete -.-> lab-9675{{"Масштабирование и управление подами (Pods) с использованием развертываний (Deployments)"}} kubernetes/edit -.-> lab-9675{{"Масштабирование и управление подами (Pods) с использованием развертываний (Deployments)"}} kubernetes/apply -.-> lab-9675{{"Масштабирование и управление подами (Pods) с использованием развертываний (Deployments)"}} kubernetes/rollout -.-> lab-9675{{"Масштабирование и управление подами (Pods) с использованием развертываний (Deployments)"}} kubernetes/scale -.-> lab-9675{{"Масштабирование и управление подами (Pods) с использованием развертываний (Deployments)"}} kubernetes/describe -.-> lab-9675{{"Масштабирование и управление подами (Pods) с использованием развертываний (Deployments)"}} 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 для сброса среды при необходимости.

Создание развертывания (Deployment)

  1. Создайте файл с именем my-deployment.yaml в директории /home/labex/project/ со следующим содержимым:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
        - name: my-app
          image: nginx:latest
          ports:
            - containerPort: 80

Этот YAML-файл определяет развертывание (Deployment) с 3 репликами, запускающими контейнер Nginx. Поле selector выбирает поды (Pods), контролируемые развертыванием (Deployment), на основе метки app.

  1. Разверните развертывание (Deployment) my-deployment:
kubectl apply -f my-deployment.yaml

Это создаст развертывание (Deployment) my-deployment и связанные с ним наборы реплик (ReplicaSets) и поды (Pods).

  1. Проверьте, что развертывание (Deployment) было создано:
kubectl get deployments

Это покажет вам развертывания (Deployments) в вашем кластере, включая развертывание (Deployment) my-deployment.

Масштабирование развертывания (Deployment)

  1. Увеличьте масштаб развертывания (Deployment) my-deployment до 5 реплик:
kubectl scale deployment my-deployment --replicas=5

Это увеличит количество реплик в развертывании (Deployment) my-deployment до 5.

  1. Проверьте, что развертывание (Deployment) было масштабировано:
kubectl get deployments

Это покажет вам развертывания (Deployments) в вашем кластере, включая развертывание (Deployment) my-deployment с 5 репликами.

Обновление развертывания (Deployment)

  1. Отредактируйте развертывание (Deployment) my-deployment так, чтобы оно использовало образ (image) nginx:1.19:
kubectl edit deployment my-deployment

Это откроет развертывание (Deployment) в вашем текстовом редакторе по умолчанию. Измените поле image на nginx:1.19 и сохраните файл.

  1. Проверьте, что развертывание (Deployment) было обновлено:
kubectl rollout status deployment/my-deployment

Это покажет вам статус последнего развертывания (rollout) развертывания (Deployment) my-deployment.

Откат развертывания (Deployment)

  1. Откатите развертывание (Deployment) my-deployment до предыдущей версии:
kubectl rollout undo deployment/my-deployment

Это откатит развертывание (Deployment) my-deployment до предыдущей версии.

  1. Проверьте, что развертывание (Deployment) было откачено:
kubectl rollout status deployment/my-deployment

Это покажет вам статус последнего развертывания (rollout) развертывания (Deployment) my-deployment.

Очистка

  1. Удалите развертывание (Deployment) my-deployment:
kubectl delete deployment my-deployment

Это удалит развертывание (Deployment) my-deployment и связанные с ним наборы реплик (ReplicaSets) и поды (Pods).

Резюме

В этом практическом занятии (lab) вы научились создавать и управлять развертываниями (Deployments) в Kubernetes. Вы создали развертывание (Deployment) с 3 репликами, масштабировали развертывание до 5 реплик, обновили развертывание для использования другого образа (image), откатили развертывание до предыдущей версии.