2019-11-14 22:15:14 +00:00
---
2020-05-08 06:59:03 +00:00
title: Привет, Minikube
2020-06-01 13:17:30 +00:00
content_type: tutorial
2019-11-14 22:15:14 +00:00
weight: 5
menu:
main:
title: "Начало"
weight: 10
post: >
< p > Готовы испачкать руки? Создайте простой кластер Kubernetes с запуском "Hello World" на Node.js< / p >
2020-03-23 10:56:45 +00:00
card:
2019-11-14 22:15:14 +00:00
name: tutorials
weight: 10
---
2020-06-01 13:17:30 +00:00
<!-- overview -->
2019-11-14 22:15:14 +00:00
Это руководство покажет вам, как запустить простое Hello World Node.js приложение
на Kubernetes используя [Minikube ](/docs/getting-started-guides/minikube ) и Katacoda.
2020-03-23 10:56:45 +00:00
Katacoda предоставляет бесплатную, встроенную в браузер Kubernetes среду.
2019-11-14 22:15:14 +00:00
{{< note > }}
Вы также можете следовать этому руководству, если вы установили [Minikube locally ](/docs/tasks/tools/install-minikube/ ).
{{< / note > }}
2020-06-01 13:17:30 +00:00
## {{% heading "objectives" %}}
2019-11-14 22:15:14 +00:00
* Разверните hello world приложение в Minikube.
* Запустите приложение.
* Посмотрите логи приложения.
2020-06-01 13:17:30 +00:00
## {{% heading "prerequisites" %}}
2019-11-14 22:15:14 +00:00
Для этого примера создан образ контейнера, собранный на основе следующих файлов:
{{< codenew language = "js" file = "minikube/server.js" > }}
{{< codenew language = "conf" file = "minikube/Dockerfile" > }}
Чтобы получить больше информации по запуску команды `docker build` , ознакомьтесь с [документацией по Docker ](https://docs.docker.com/engine/reference/commandline/build/ ).
2020-06-01 13:17:30 +00:00
<!-- lessoncontent -->
2019-11-14 22:15:14 +00:00
## Создание кластера Minikube
2020-03-23 10:56:45 +00:00
1. Нажмите ** Запуск Терминала**
2019-11-14 22:15:14 +00:00
{{< kat-button > }}
{{< note > }}Если у вас локально установлен Minikube, выполните `minikube start` .{{< / note > }}
2020-03-23 10:56:45 +00:00
2. Откройте веб-панель Kubernetes в браузере:
2019-11-14 22:15:14 +00:00
```shell
minikube dashboard
```
2020-01-12 11:59:37 +00:00
3. Только для окружения Katacoda: В верхней части панели нажмите знак "плюс", а затем на **Select port to view on Host 1** (**Выберите порт для отображения на хосте 1**).
2019-11-14 22:15:14 +00:00
2020-01-12 11:59:37 +00:00
4. Только для окружения Katacoda: введите `30000` , а затем нажмите **Display Port** (**Показать порт**).
2019-11-14 22:15:14 +00:00
## Создание Deployment
[*Под* ](/docs/concepts/workloads/pods/pod/ ) Kubernetes - это группа из одного или более контейнеров, связанных друг с другом с целью адмистрирования и организации сети. В данном руководстве под включает в себя один контейнер. [*Deployment* ](/docs/concepts/workloads/controllers/deployment/ ) в Kubernetes проверяет здоровье пода и перезагружает контейнер пода в случае е г о отказа. Deployment-ы являются рекоммендуемым способом организации создания и масштабирования подов.
1. Используйте команду `kubectl create` для создание деплоймента для управления подом. Под запускает контейнер на основе предоставленного Docker образа.
```shell
2020-04-27 16:31:51 +00:00
kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
2019-11-14 22:15:14 +00:00
```
2. Посмотреть информацию о Deployment:
```shell
kubectl get deployments
```
Вывод:
```shell
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
hello-node 1 1 1 1 1m
```
3. Посмотреть информацию о поде:
```shell
kubectl get pods
```
Вывод:
```shell
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
```
2020-03-23 10:56:45 +00:00
2019-11-14 22:15:14 +00:00
{{< note > }}Больше информации о командах `kubectl` можно найти по ссылке [обзор kubectl ](/docs/user-guide/kubectl-overview/ ).{{< / note > }}
## Создание сервиса
По-умолчанию под доступен только при обращении по е г о внутреннему IP адресу внутри кластера Kubernetes. Чтобы сделать контейнер `hello-node` доступным вне виртульной сети Kubernetes, необходимо представить под как [*сервис* ](/docs/concepts/services-networking/service/ ) Kubernetes.
2020-01-12 11:59:37 +00:00
1. Сделать под доступным для публичной сети Интернет можно с помощью команды `kubectl expose` :
2019-11-14 22:15:14 +00:00
```shell
kubectl expose deployment hello-node --type=LoadBalancer --port=8080
```
2020-03-23 10:56:45 +00:00
2019-11-14 22:15:14 +00:00
Флаг `--type=LoadBalancer` показывает, что сервис должен быть виден вне кластера.
2. Посмотреть только что созданный сервис:
```shell
kubectl get services
```
Вывод:
```shell
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
```
Для облачных провайдеров, поддерживающих балансировщики нагрузки, для доступа к сервису будет предоставлен внешний IP адрес. В Minikube тип `LoadBalancer` делает сервис доступным при обращении с помощью команды `minikube service` .
3. Выполните следующую команду:
```shell
minikube service hello-node
```
4. Только для окружения Katacoda: Нажмите на знак "Плюс", затем нажмите **Select port to view on Host 1** .
2020-03-23 10:56:45 +00:00
5. Только для окружения Katacoda: Введите `30369` (порт указан рядом с `8080` в выводе сервиса), затем нажмите ???.
2019-11-14 22:15:14 +00:00
Откроется окно браузера, в котором запущено ваше приложение и будет отображено сообщение "Hello World".
2020-01-12 11:59:37 +00:00
## Добавление дополнений
2019-11-14 22:15:14 +00:00
2020-01-12 11:59:37 +00:00
В Minikube есть набор встроенных дополнений, которые могут быть включены, выключены и открыты в локальном окружении Kubernetes.
2019-11-14 22:15:14 +00:00
2020-01-12 11:59:37 +00:00
1. Отобразить текущие поддерживаемые дополнения:
2019-11-14 22:15:14 +00:00
```shell
minikube addons list
```
Вывод:
```shell
addon-manager: enabled
dashboard: enabled
default-storageclass: enabled
efk: disabled
freshpod: disabled
2020-01-20 11:59:36 +00:00
gvisor: disabled
2019-11-14 22:15:14 +00:00
heapster: disabled
2020-01-20 11:59:36 +00:00
helm-tiller: disabled
2019-11-14 22:15:14 +00:00
ingress: disabled
2020-01-20 11:59:36 +00:00
ingress-dns: disabled
logviewer: disabled
2019-11-14 22:15:14 +00:00
metrics-server: disabled
nvidia-driver-installer: disabled
nvidia-gpu-device-plugin: disabled
registry: disabled
registry-creds: disabled
storage-provisioner: enabled
2020-01-20 11:59:36 +00:00
storage-provisioner-gluster: disabled
2019-11-14 22:15:14 +00:00
```
2020-03-23 10:56:45 +00:00
2020-01-12 11:59:37 +00:00
2. Включить дополнение, например, `metrics-server` :
2019-11-14 22:15:14 +00:00
```shell
2020-01-12 11:59:37 +00:00
minikube addons enable metrics-server
2019-11-14 22:15:14 +00:00
```
2020-03-23 10:56:45 +00:00
2019-11-14 22:15:14 +00:00
Вывод:
```shell
2020-01-12 11:59:37 +00:00
metrics-server was successfully enabled
2019-11-14 22:15:14 +00:00
```
3. Посмотреть Pod и Service, которые вы только что создали:
```shell
kubectl get pod,svc -n kube-system
```
Вывод:
```shell
NAME READY STATUS RESTARTS AGE
2020-01-20 11:59:36 +00:00
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
2019-11-14 22:15:14 +00:00
pod/influxdb-grafana-b29w8 2/2 Running 0 26s
pod/kube-addon-manager-minikube 1/1 Running 0 34m
2020-01-20 11:59:36 +00:00
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
2019-11-14 22:15:14 +00:00
pod/storage-provisioner 1/1 Running 0 34m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
2020-01-20 11:59:36 +00:00
service/metrics-server ClusterIP 10.96.241.45 < none > 80/TCP 26s
2019-11-14 22:15:14 +00:00
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
```
2020-01-12 11:59:37 +00:00
4. Отключить `metrics-server` :
2019-11-14 22:15:14 +00:00
```shell
2020-01-12 11:59:37 +00:00
minikube addons disable metrics-server
2019-11-14 22:15:14 +00:00
```
2020-03-23 10:56:45 +00:00
2019-11-14 22:15:14 +00:00
Вывод:
```shell
2020-01-12 11:59:37 +00:00
metrics-server was successfully disabled
2019-11-14 22:15:14 +00:00
```
## Освобождение ресурсов
Теперь вы можете освободить ресурсы созданного вами кластера:
```shell
kubectl delete service hello-node
kubectl delete deployment hello-node
```
Остановите выполнение виртуальной машины Minikube (опционально):
```shell
minikube stop
```
Удалите виртуальную машину Minikube (опционально):
```shell
minikube delete
```
2020-06-01 13:17:30 +00:00
## {{% heading "whatsnext" %}}
2019-11-14 22:15:14 +00:00
2020-01-12 11:59:37 +00:00
* Больше о б [объектах деплоймента ](/docs/concepts/workloads/controllers/deployment/ ).
* Больше о [развёртывании приложения ](/docs/user-guide/deploying-applications/ ).
2019-11-14 22:15:14 +00:00
* Больше о б [объектах сервиса ](/docs/concepts/services-networking/service/ ).
2020-06-01 13:17:30 +00:00