Введение
Команда kubectl run является одним из самых простых и универсальных способов создания ресурсов в Kubernetes. Она позволяет быстро развертывать контейнеры, создавать задания (jobs) для пакетной обработки или настраивать развертывания (deployments) для управления несколькими репликами приложения. Этот практикум (lab) разработан для того, чтобы помочь начинающим понять основы команды kubectl run и научиться эффективно ее использовать.
По завершении этого практикума вы научитесь:
- Запускать и проверять кластер Minikube.
- Создавать под (pod) с помощью команды
kubectl run. - Создавать развертывание (deployment) с несколькими репликами.
- Запускать задание (job) для пакетной обработки.
- Очищать ресурсы для поддержания работоспособности кластера.
Запуск кластера 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 для сброса среды, если это необходимо.
Изучение команды kubectl run
Команда kubectl run используется для создания и запуска определенного образа в поде (pod). Она предоставляет множество параметров для настройки поведения, среды и характеристик пода.
Запустите следующую команду, чтобы просмотреть доступные параметры для kubectl run:
kubectl run -h
Вы увидите следующий вывод:
Create and run a particular image in a pod.
Examples:
## Start a nginx pod
kubectl run nginx --image=nginx
## Start a hazelcast pod and let the container expose port 5701
kubectl run hazelcast --image=hazelcast/hazelcast --port=5701
## Start a hazelcast pod and set environment variables "DNS_DOMAIN=cluster" and "POD_NAMESPACE=default" in the container
kubectl run hazelcast --image=hazelcast/hazelcast --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default"
## Start a hazelcast pod and set labels "app=hazelcast" and "env=prod" in the container
kubectl run hazelcast --image=hazelcast/hazelcast --labels="app=hazelcast,env=prod"
## Dry run; print the corresponding API objects without creating them
kubectl run nginx --image=nginx --dry-run=client
## Start a nginx pod, but overload the spec with a partial set of values parsed from JSON
kubectl run nginx --image=nginx --overrides='{ "apiVersion": "v1", "spec": {... } }'
## Start a busybox pod and keep it in the foreground, don't restart it if it exits
kubectl run -i -t busybox --image=busybox --restart=Never
## Start the nginx pod using the default command, but use custom arguments (arg1.. argN) for that command
kubectl run nginx --image=nginx -- <arg1> <arg2>... <argN>
## Start the nginx pod using a different command and custom arguments
kubectl run nginx --image=nginx --command -- <cmd> <arg1>... <argN>
Создание пода (Pod)
Под (pod) - это наименьшая развертываемая единица в Kubernetes, представляющая собой один или несколько контейнеров, работающих вместе. На этом шаге мы создадим под, в котором будет запущен веб - сервер Nginx.
Создание пода:
Запустите следующую команду для создания пода с именем
nginx-pod:kubectl run nginx-pod --image=nginx- Опция
--imageуказывает контейнерный образ, который нужно использовать. Здесь мы используем официальный образ Nginx.
- Опция
Проверка пода:
Проверьте, что под запущен:
kubectl get pods- Найдите
nginx-podв выводе. - Когда под будет готов, в столбце
STATUSдолжно отображатьсяRunning(запущен).
- Найдите
Если в статусе пода отображается Pending (в ожидании), Kubernetes, возможно, все еще загружает контейнерный образ. Подождите несколько минут и запустите команду kubectl get pods снова.
Создание развертывания (Deployment) и масштабирование реплик
Развертывание (deployment) управляет набором подов (pods) и обеспечивает их запуск в соответствии с заданными параметрами. Это полезно для масштабирования и обновления приложений.
Создание развертывания:
Запустите следующую команду для создания развертывания с именем
nginx-deployment:kubectl create deployment nginx-deployment --image=nginx- Опция
--imageуказывает контейнерный образ, который нужно использовать.
- Опция
Масштабирование развертывания до 3 реплик:
Поскольку флаг
--replicasустарел, мы будем масштабировать развертывание с помощью командыkubectl scale.Используйте команду
kubectl scaleдля настройки количества реплик:kubectl scale deployment nginx-deployment --replicas=3- Это гарантирует, что в рамках развертывания будут запущены три пода.
Проверка развертывания и его реплик:
Проверьте статус развертывания и подов:
kubectl get deployments kubectl get pods- Убедитесь, что в развертывании в столбце
READYотображается 3 реплики. - Проверьте, что в выводе команды
kubectl get podsперечислены три пода.
- Убедитесь, что в развертывании в столбце
Если под не находится в состоянии Running, это может быть связано с недостаточностью ресурсов кластера. Проверьте события пода с помощью команды:
kubectl describe pod <pod-name>
Создание задачи (Job)
Задание (job) используется для запуска задач, которые должны завершиться успешно. Например, пакетные задания или задачи обработки данных. Мы будем использовать команду kubectl run для создания задания и проверки его выполнения.
- Создание задания
Запустите следующую команду для создания задания с именем busybox-job:
kubectl run busybox-job --image=busybox --restart=OnFailure -- echo "Hello from Kubernetes"
- Флаг
--restart=OnFailureуказывает, что это задание. - Команда
echoопределяет задачу, которую будет выполнять задание.
- Проверка статуса задания
Запустите следующую команду для проверки задания:
kubectl get jobs
Ожидаемый вывод:
NAME COMPLETIONS DURATION AGE
busybox-job 1/1 5s 10s
COMPLETIONS: Показывает, что задание успешно выполнилось один раз (1/1).- Если задание не отображается в списке, оно может быть автоматически удалено. Перейдите к следующему шагу, чтобы проверить его под.
- Проверка пода задания
Поскольку задание выполняется внутри пода, используйте следующую команду для проверки пода:
kubectl get pods
Ожидаемый вывод:
NAME READY STATUS RESTARTS AGE
busybox-job 0/1 Completed 0 30s
- В поле
STATUSдолжно отображатьсяCompleted, что означает, что задание завершено.
- Проверка вывода задания
Просмотрите логи пода задания, чтобы проверить вывод:
kubectl logs busybox-job
Ожидаемый вывод:
Hello from Kubernetes
Это подтверждает, что задание успешно выполнено.
Очистка
Для того чтобы сохранить чистоту вашего кластера, удалите ресурсы, созданные вами в рамках лабораторной работы.
Удаление ресурсов:
Запустите следующие команды:
kubectl delete pod nginx-pod kubectl delete pod busybox-job kubectl delete deployment nginx-deploymentПроверка очистки:
Убедитесь, что не осталось ресурсов:
kubectl get pods kubectl get deployments- Убедитесь, что в выводе не перечислены ресурсы, которые вы создали.
Резюме
В рамках данной лабораторной работы вы научились:
- Запускать и проверять кластер Minikube.
- Использовать команду
kubectl runдля создания и управления подами (pods), развертываниями (deployments) и заданиями (jobs). - Очищать ресурсы для поддержания порядка в кластере.
Команда kubectl run представляет собой простой и мощный способ развертывания приложений и управления рабочими нагрузками в Kubernetes. Практикуя эти шаги, вы сможете заложить прочную основу для более продвинутых рабочих процессов в Kubernetes.


