website/content/uk/docs/tutorials/hello-minikube.md

16 KiB
Raw Blame History

title content_template weight menu card
Привіт Minikube templates/tutorial 5
main
title weight post
Початок роботи 10 <p>Готові попрацювати? Створимо простий Kubernetes кластер для запуску Node.js застосунку "Hello World".</p>
name weight
навчальні матеріали 10

{{% capture overview %}}

З цього навчального матеріалу ви дізнаєтесь, як запустити у Kubernetes простий Hello World застосунок на Node.js за допомогою Minikube і Katacoda. Katacoda надає безплатне Kubernetes середовище, що доступне у вашому браузері.

{{< note >}} Також ви можете навчатись за цим матеріалом, якщо встановили 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.

{{% /capture %}}

{{% capture lessoncontent %}}

Створення Minikube кластера

  1. Натисніть кнопку Запуск термінала

    {{< kat-button >}}

    {{< note >}}Якщо Minikube встановлений локально, виконайте команду `minikube start`.{{< /note >}}
    
  1. Відкрийте Kubernetes дашборд у браузері:

    minikube dashboard
    
  1. Тільки для Katacoda: у верхній частині вікна термінала натисніть знак плюс, а потім -- Select port to view on Host 1.
  1. Тільки для Katacoda: введіть 30000, а потім натисніть Display Port.

Створення Deployment

Pod у Kubernetes -- це група з одного або декількох контейнерів, що об'єднані разом з метою адміністрування і роботи у мережі. У цьому навчальному матеріалі Pod має лише один контейнер. Kubernetes Deployment перевіряє стан Pod'а і перезапускає контейнер Pod'а, якщо контейнер перестає працювати. Створювати і масштабувати Pod'и рекомендується за допомогою Deployment'ів.

  1. За допомогою команди kubectl create створіть Deployment, який керуватиме Pod'ом. Pod запускає контейнер на основі наданого Docker образу.

    kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node
    
  1. Перегляньте інформацію про запущений Deployment:

    kubectl get deployments
    
    У виводі ви побачите подібну інформацію:
    
    NAME         READY   UP-TO-DATE   AVAILABLE   AGE
    hello-node   1/1     1            1           1m
    
  1. Перегляньте інформацію про запущені Pod'и:

    kubectl get pods
    
    У виводі ви побачите подібну інформацію:
    
    NAME                          READY     STATUS    RESTARTS   AGE
    hello-node-5f76cf6ccf-br9b5   1/1       Running   0          1m
    
  1. Перегляньте події кластера:

    kubectl get events
    
  1. Перегляньте конфігурацію kubectl:

    kubectl config view
    
    {{< note >}}Більше про команди `kubectl` ви можете дізнатися зі статті [Загальна інформація про kubectl](/docs/user-guide/kubectl-overview/).{{< /note >}}
    

Створення Service

За умовчанням, Pod доступний лише за внутрішньою IP-адресою у межах Kubernetes кластера. Для того, щоб контейнер hello-node став доступний за межами віртуальної мережі Kubernetes, Pod необхідно відкрити як Kubernetes Service.

  1. Відкрийте Pod для публічного доступу з інтернету за допомогою команди kubectl expose:

    kubectl expose deployment hello-node --type=LoadBalancer --port=8080
    
    Прапорець `--type=LoadBalancer` вказує, що ви хочете відкрити доступ до Service за межами кластера.
    
  1. Перегляньте інформацію про Service, який ви щойно створили:

    kubectl get services
    
    У виводі ви побачите подібну інформацію:
    
    NAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    hello-node   LoadBalancer   10.108.144.78   <pending>     8080:30369/TCP   21s
    kubernetes   ClusterIP      10.96.0.1       <none>        443/TCP          23m
    
    Для хмарних провайдерів, що підтримують балансування навантаження, доступ до Service надається через зовнішню IP-адресу. Для Minikube, тип `LoadBalancer` робить Service доступним ззовні за допомогою команди `minikube service`.
    
  1. Виконайте наступну команду:

    minikube service hello-node
    
  1. Тільки для Katacoda: натисніть знак плюс, а потім -- Select port to view on Host 1.
  1. Тільки для Katacoda: запишіть п'ятизначний номер порту, що відображається напроти 8080 у виводі сервісу. Номер цього порту генерується довільно і тому може бути іншим у вашому випадку. Введіть номер порту у призначене для цього текстове поле і натисніть Display Port. У нашому прикладі номер порту 30369.

    Це відкриє вікно браузера, в якому запущений ваш застосунок, і покаже повідомлення "Hello World".
    

Увімкнення розширень

Minikube має ряд вбудованих {{< glossary_tooltip text="розширень" term_id="addons" >}}, які можна увімкнути, вимкнути і відкрити у локальному Kubernetes оточенні.

  1. Перегляньте перелік підтримуваних розширень:

    minikube addons list
    
    У виводі ви побачите подібну інформацію:
    
    addon-manager: enabled
    dashboard: enabled
    default-storageclass: enabled
    efk: disabled
    freshpod: disabled
    gvisor: disabled
    helm-tiller: disabled
    ingress: disabled
    ingress-dns: disabled
    logviewer: disabled
    metrics-server: disabled
    nvidia-driver-installer: disabled
    nvidia-gpu-device-plugin: disabled
    registry: disabled
    registry-creds: disabled
    storage-provisioner: enabled
    storage-provisioner-gluster: disabled
    
  1. Увімкніть розширення, наприклад metrics-server:

    minikube addons enable metrics-server
    
    У виводі ви побачите подібну інформацію:
    
    metrics-server was successfully enabled
    
  1. Перегляньте інформацію про Pod і Service, які ви щойно створили:

    kubectl get pod,svc -n kube-system
    
    У виводі ви побачите подібну інформацію:
    
    NAME                                        READY     STATUS    RESTARTS   AGE
    pod/coredns-5644d7b6d9-mh9ll                1/1       Running   0          34m
    pod/coredns-5644d7b6d9-pqd2t                1/1       Running   0          34m
    pod/metrics-server-67fb648c5                1/1       Running   0          26s
    pod/etcd-minikube                           1/1       Running   0          34m
    pod/influxdb-grafana-b29w8                  2/2       Running   0          26s
    pod/kube-addon-manager-minikube             1/1       Running   0          34m
    pod/kube-apiserver-minikube                 1/1       Running   0          34m
    pod/kube-controller-manager-minikube        1/1       Running   0          34m
    pod/kube-proxy-rnlps                        1/1       Running   0          34m
    pod/kube-scheduler-minikube                 1/1       Running   0          34m
    pod/storage-provisioner                     1/1       Running   0          34m
    
    NAME                           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
    service/metrics-server         ClusterIP   10.96.241.45    <none>        80/TCP              26s
    service/kube-dns               ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP       34m
    service/monitoring-grafana     NodePort    10.99.24.54     <none>        80:30002/TCP        26s
    service/monitoring-influxdb    ClusterIP   10.111.169.94   <none>        8083/TCP,8086/TCP   26s
    
  1. Вимкніть metrics-server:

    minikube addons disable metrics-server
    
    У виводі ви побачите подібну інформацію:
    
    metrics-server was successfully disabled
    

Вивільнення ресурсів

Тепер ви можете видалити ресурси, які створили у вашому кластері:

kubectl delete service hello-node
kubectl delete deployment hello-node

За бажанням, зупиніть віртуальну машину (ВМ) з Minikube:

minikube stop

За бажанням, видаліть ВМ з Minikube:

minikube delete

{{% /capture %}}

{{% capture whatsnext %}}

{{% /capture %}}