--- #title: Hello Minikube title: Привіт Minikube content_template: templates/tutorial weight: 5 menu: main: #title: "Get Started" title: "Початок роботи" weight: 10 #post: > #
Ready to get your hands dirty? Build a simple Kubernetes cluster that runs "Hello World" for Node.js.
post: >Готові попрацювати? Створимо простий Kubernetes кластер для запуску Node.js застосунку "Hello World".
card: #name: tutorials name: навчальні матеріали weight: 10 --- {{% capture overview %}} З цього навчального матеріалу ви дізнаєтесь, як запустити у Kubernetes простий Hello World застосунок на Node.js за допомогою [Minikube](/docs/setup/learning-environment/minikube) і Katacoda. Katacoda надає безплатне Kubernetes середовище, що доступне у вашому браузері. {{< note >}} Також ви можете навчатись за цим матеріалом, якщо встановили [Minikube локально](/docs/tasks/tools/install-minikube/). {{< /note >}} {{% /capture %}} {{% capture objectives %}} * Розгорнути Hello World застосунок у Minikube. * Запустити застосунок. * Переглянути логи застосунку. {{% /capture %}} {{% capture prerequisites %}} У цьому навчальному матеріалі ми використовуємо образ контейнера, зібраний із наступних файлів: {{< codenew language="js" file="minikube/server.js" >}} {{< codenew language="conf" file="minikube/Dockerfile" >}} Більше інформації про команду `docker build` ви знайдете у [документації Docker](https://docs.docker.com/engine/reference/commandline/build/). {{% /capture %}} {{% capture lessoncontent %}} ## Створення Minikube кластера 1. Натисніть кнопку **Запуск термінала** {{< kat-button >}} {{< note >}}Якщо Minikube встановлений локально, виконайте команду `minikube start`.{{< /note >}} 2. Відкрийте Kubernetes дашборд у браузері: ```shell minikube dashboard ``` 3. Тільки для Katacoda: у верхній частині вікна термінала натисніть знак плюс, а потім -- **Select port to view on Host 1**. 4. Тільки для Katacoda: введіть `30000`, а потім натисніть **Display Port**. ## Створення Deployment [*Pod*](/docs/concepts/workloads/pods/pod/) у Kubernetes -- це група з одного або декількох контейнерів, що об'єднані разом з метою адміністрування і роботи у мережі. У цьому навчальному матеріалі Pod має лише один контейнер. Kubernetes [*Deployment*](/docs/concepts/workloads/controllers/deployment/) перевіряє стан Pod'а і перезапускає контейнер Pod'а, якщо контейнер перестає працювати. Створювати і масштабувати Pod'и рекомендується за допомогою Deployment'ів. 1. За допомогою команди `kubectl create` створіть Deployment, який керуватиме Pod'ом. Pod запускає контейнер на основі наданого Docker образу. ```shell kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node ``` 2. Перегляньте інформацію про запущений Deployment: ```shell kubectl get deployments ``` У виводі ви побачите подібну інформацію: ``` NAME READY UP-TO-DATE AVAILABLE AGE hello-node 1/1 1 1 1m ``` 3. Перегляньте інформацію про запущені Pod'и: ```shell kubectl get pods ``` У виводі ви побачите подібну інформацію: ``` NAME READY STATUS RESTARTS AGE hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m ``` 4. Перегляньте події кластера: ```shell kubectl get events ``` 5. Перегляньте конфігурацію `kubectl`: ```shell kubectl config view ``` {{< note >}}Більше про команди `kubectl` ви можете дізнатися зі статті [Загальна інформація про kubectl](/docs/user-guide/kubectl-overview/).{{< /note >}} ## Створення Service За умовчанням, Pod доступний лише за внутрішньою IP-адресою у межах Kubernetes кластера. Для того, щоб контейнер `hello-node` став доступний за межами віртуальної мережі Kubernetes, Pod необхідно відкрити як Kubernetes [*Service*](/docs/concepts/services-networking/service/). 1. Відкрийте Pod для публічного доступу з інтернету за допомогою команди `kubectl expose`: ```shell kubectl expose deployment hello-node --type=LoadBalancer --port=8080 ``` Прапорець `--type=LoadBalancer` вказує, що ви хочете відкрити доступ до Service за межами кластера. 2. Перегляньте інформацію про Service, який ви щойно створили: ```shell kubectl get services ``` У виводі ви побачите подібну інформацію: ``` NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-node LoadBalancer 10.108.144.78