--- title: Привет, Minikube content_type: tutorial weight: 5 menu: main: title: "Начало" weight: 10 post: >
Готовы приступить к делу? Создайте простой кластер Kubernetes и запустите в нём тестовое приложение.
card: name: tutorials weight: 10 --- Это руководство демонстрирует, как запустить простое приложение в Kubernetes с помощью minikube. Для этого используется образ контейнера с NGINX, который выводит обратно текст всех запросов. ## {{% heading "objectives" %}} * Развернуть простое приложение в minikube. * Запустить приложение. * Посмотреть логи приложения. ## {{% heading "prerequisites" %}} Руководство подразумевает, что вы уже настроили `minikube`. См. документацию [minikube start](https://minikube.sigs.k8s.io/docs/start/) для инструкций по его установке. Вам также потребуется установить `kubectl`. См. [Установку и настройку kubectl](/ru/docs/tasks/tools/install-kubectl/) для инструкций по его установке. ## Создание кластера minikube ```shell minikube start ``` ## Запуск панели (dashboard) Откройте панель Kubernetes. Это можно сделать двумя способами: {{< tabs name="dashboard" >}} {{% tab name="Запуск в браузере" %}} Откройте **новый** терминал и запустите: ```shell # Запустите в новом терминале и не закрывайте его. minikube dashboard ``` Теперь можно вернуться к терминалу, где вы запускали `minikube start`. {{< note >}} Команда `dashboard` активирует дополнение dashboard и открывает прокси в веб-браузере по умолчанию. В этой панели можно создавать такие Kubernetes-ресурсы, как Deployment и Service. Если вы работаете в окружении с правами root, см. вкладку «Копирование URL для запуска». По умолчанию панель доступна только из внутренней виртуальной сети Kubernetes. Команда `dashboard` создаёт временный прокси, чтобы панель была доступна извне внутренней виртуальной сети Kubernetes. Чтобы остановить работу прокси, выполните `Ctrl+C` для завершения процесса. Когда команда завершит работу, панель останется запущенной внутри кластера Kubernetes. Вы можете снова выполнить команду `dashboard`, чтобы создать новую прокси для доступа к панели. {{< /note >}} {{% /tab %}} {{% tab name="Копирование URL для запуска" %}} Если вы не хотите, чтобы minikube запускал веб-браузер, выполните команду `dashboard` с флагом `--url`. В этом случае `minikube` выведет URL, который вы можете открыть в любом браузере. Откройте **новый** терминал и запустите: ```shell # Запустите в новом терминале и не закрывайте его. minikube dashboard --url ``` Теперь можно вернуться к терминалу, где вы запускали `minikube start`. {{% /tab %}} {{< /tabs >}} ## Создание деплоймента [*Под*](/docs/concepts/workloads/pods/pod/) Kubernetes — это группа из одного или более контейнеров, связанных друг с другом для удобного администрирования и организации сети. В данном руководстве под включает в себя один контейнер. Деплоймент ([*Deployment*](/docs/concepts/workloads/controllers/deployment/)) в Kubernetes проверяет здоровье пода и перезагружает контейнер пода в случае, если он прекратил работу. Деплойменты — рекомендуемый способ создания и масштабирования подов. 1. Используйте команду `kubectl create` для создания деплоймента, который будет управлять подом. Под запустит контейнер с указанным Docker-образом. ```shell # Запуск тестового образа контейнера с веб-сервером kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=8080 ``` 1. Посмотреть информацию о Deployment: ```shell kubectl get deployments ``` Вывод будет примерно следующим: ```shell NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE hello-node 1 1 1 1 1m ``` 1. Посмотреть информацию о поде: ```shell kubectl get pods ``` Вывод будет примерно следующим: ```shell NAME READY STATUS RESTARTS AGE hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m ``` 1. Посмотреть события кластера: ```shell kubectl get events ``` 1. Посмотреть конфигурацию `kubectl`: ```shell kubectl config view ``` {{< note >}} Больше информации о командах `kubectl` см. в [обзоре kubectl](/ru/docs/reference/kubectl/). {{< /note >}} ## Создание сервиса По умолчанию под доступен только при обращении по его внутреннему IP-адресу внутри кластера Kubernetes. Чтобы сделать контейнер `hello-node` доступным вне виртуальной сети Kubernetes, необходимо представить под как сервис [*Service*](/docs/concepts/services-networking/service/) Kubernetes. 1. Сделать под доступным для публичного интернета можно с помощью команды `kubectl expose`: ```shell kubectl expose deployment hello-node --type=LoadBalancer --port=8080 ``` Флаг `--type=LoadBalancer` показывает, что сервис должен быть виден вне кластера. Код приложения в тестовом образе прослушивает только TCP-порт 8080. Если вы сделали приложение доступным по другому порту командой `kubectl expose`, клиенты не смогут подключиться к этому порту. 2. Посмотреть только что созданный сервис: ```shell kubectl get services ``` Вывод будет примерно следующим: ```shell NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-node LoadBalancer 10.108.144.78