16 KiB
title | content_template | weight | menu | card | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Привіт Minikube | templates/tutorial | 5 |
|
|
{{% 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 кластера
-
Натисніть кнопку Запуск термінала
{{< kat-button >}}
{{< note >}}Якщо Minikube встановлений локально, виконайте команду `minikube start`.{{< /note >}}
-
Відкрийте Kubernetes дашборд у браузері:
minikube dashboard
- Тільки для Katacoda: у верхній частині вікна термінала натисніть знак плюс, а потім -- Select port to view on Host 1.
- Тільки для Katacoda: введіть
30000
, а потім натисніть Display Port.
Створення Deployment
Pod у Kubernetes -- це група з одного або декількох контейнерів, що об'єднані разом з метою адміністрування і роботи у мережі. У цьому навчальному матеріалі Pod має лише один контейнер. Kubernetes Deployment перевіряє стан Pod'а і перезапускає контейнер Pod'а, якщо контейнер перестає працювати. Створювати і масштабувати Pod'и рекомендується за допомогою Deployment'ів.
-
За допомогою команди
kubectl create
створіть Deployment, який керуватиме Pod'ом. Pod запускає контейнер на основі наданого Docker образу.kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node
-
Перегляньте інформацію про запущений Deployment:
kubectl get deployments
У виводі ви побачите подібну інформацію:
NAME READY UP-TO-DATE AVAILABLE AGE hello-node 1/1 1 1 1m
-
Перегляньте інформацію про запущені Pod'и:
kubectl get pods
У виводі ви побачите подібну інформацію:
NAME READY STATUS RESTARTS AGE hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m
-
Перегляньте події кластера:
kubectl get events
-
Перегляньте конфігурацію
kubectl
:kubectl config view
{{< note >}}Більше про команди `kubectl` ви можете дізнатися зі статті [Загальна інформація про kubectl](/docs/user-guide/kubectl-overview/).{{< /note >}}
Створення Service
За умовчанням, Pod доступний лише за внутрішньою IP-адресою у межах Kubernetes кластера. Для того, щоб контейнер hello-node
став доступний за межами віртуальної мережі Kubernetes, Pod необхідно відкрити як Kubernetes Service.
-
Відкрийте Pod для публічного доступу з інтернету за допомогою команди
kubectl expose
:kubectl expose deployment hello-node --type=LoadBalancer --port=8080
Прапорець `--type=LoadBalancer` вказує, що ви хочете відкрити доступ до Service за межами кластера.
-
Перегляньте інформацію про 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`.
-
Виконайте наступну команду:
minikube service hello-node
- Тільки для Katacoda: натисніть знак плюс, а потім -- Select port to view on Host 1.
-
Тільки для Katacoda: запишіть п'ятизначний номер порту, що відображається напроти
8080
у виводі сервісу. Номер цього порту генерується довільно і тому може бути іншим у вашому випадку. Введіть номер порту у призначене для цього текстове поле і натисніть Display Port. У нашому прикладі номер порту30369
.Це відкриє вікно браузера, в якому запущений ваш застосунок, і покаже повідомлення "Hello World".
Увімкнення розширень
Minikube має ряд вбудованих {{< glossary_tooltip text="розширень" term_id="addons" >}}, які можна увімкнути, вимкнути і відкрити у локальному Kubernetes оточенні.
-
Перегляньте перелік підтримуваних розширень:
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
-
Увімкніть розширення, наприклад
metrics-server
:minikube addons enable metrics-server
У виводі ви побачите подібну інформацію:
metrics-server was successfully enabled
-
Перегляньте інформацію про 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
-
Вимкніть
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 %}}
- Дізнайтеся більше про об'єкти Deployment.
- Дізнайтеся більше про розгортання застосунків.
- Дізнайтеся більше про об'єкти Service.
{{% /capture %}}