Kubernetes v1.16 документация больше не поддерживается. Версия, которую вы сейчас просматриваете, является статической. Актуальную документацию вы можете найти последняя версия.

Edit This Page

Привет Minikube

Это руководство покажет вам, как запустить простое Hello World Node.js приложение на Kubernetes используя Minikube и Katacoda. Katacoda предоставляет бесплатную, встроенную в браузер Kubernetes среду.

Заметка: Вы также можете следовать этому руководству, если вы установили Minikube locally.

Цели

  • Разверните hello world приложение в Minikube.
  • Запустите приложение.
  • Посмотрите логи приложения.

Прежде чем вы начнете

Для этого примера создан образ контейнера, собранный на основе следующих файлов:

minikube/server.js
var http = require('http');

var handleRequest = function(request, response) {
  console.log('Получен запрос на URL: ' + request.url);
  response.writeHead(200);
  response.end('Hello World!');
};
var www = http.createServer(handleRequest);
www.listen(8080);
minikube/Dockerfile
FROM node:6.14.2
EXPOSE 8080
COPY server.js .
CMD node server.js

Чтобы получить больше информации по запуску команды docker build, ознакомьтесь с документацией по Docker.

Создание кластера Minikube

  1. Нажмите Запуск Терминала

    Заметка: Если у вас локально установлен Minikube, выполните minikube start.
  2. Откройте панель Kubernetes в браузере:

    minikube dashboard
  3. Только для окружения Katacoda: В верхней части панели нажмите знак “плюч”, а затем нажмите на Select port to view on Host 1 (Выберите порт для отображения на хосте 1).

  4. Только для окружения Katacoda: Type 30000, and then click Display Port (Показать порт).

Создание Deployment

Под Kubernetes - это группа из одного или более контейнеров, связанных друг с другом с целью адмистрирования и организации сети. В данном руководстве под включает в себя один контейнер. Deployment в Kubernetes проверяет здоровье пода и перезагружает контейнер пода в случае его отказа. Deployment-ы являются рекоммендуемым способом организации создания и масштабирования подов.

  1. Используйте команду kubectl create для создание деплоймента для управления подом. Под запускает контейнер на основе предоставленного Docker образа.

    kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node
  2. Посмотреть информацию о Deployment:

    kubectl get deployments

    Вывод:

    NAME         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    hello-node   1         1         1            1           1m
  3. Посмотреть информацию о поде:

    kubectl get pods

    Вывод:

    NAME                          READY     STATUS    RESTARTS   AGE
    hello-node-5f76cf6ccf-br9b5   1/1       Running   0          1m
  4. Посмотреть события кластера:

    kubectl get events
  5. Посмотреть kubectl конфигурацию:

    kubectl config view
    Заметка: Больше информации о командах kubectl можно найти по ссылке обзор kubectl.

Создание сервиса

По-умолчанию под доступен только при обращении по его внутреннему IP адресу внутри кластера Kubernetes. Чтобы сделать контейнер hello-node доступным вне виртульной сети Kubernetes, необходимо представить под как сервис Kubernetes.

  1. Представить под для видимости в публичной сети Интернет можно с помощью команды kubectl expose:

    kubectl expose deployment hello-node --type=LoadBalancer --port=8080

    Флаг --type=LoadBalancer показывает, что сервис должен быть виден вне кластера.

  2. Посмотреть только что созданный сервис:

    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

    Для облачных провайдеров, поддерживающих балансировщики нагрузки, для доступа к сервису будет предоставлен внешний IP адрес. В Minikube тип LoadBalancer делает сервис доступным при обращении с помощью команды minikube service.

  3. Выполните следующую команду:

    minikube service hello-node
  4. Только для окружения Katacoda: Нажмите на знак “Плюс”, затем нажмите Select port to view on Host 1.

  5. Только для окружения Katacoda: Введите 30369 (порт указан рядом с 8080 в выводе сервиса), затем нажмите ???.

    Откроется окно браузера, в котором запущено ваше приложение и будет отображено сообщение “Hello World”.

Добавление аддонов

В Minikube есть набор встроенных аддонов, которые могут быть включены, выключены и открыты в локальном окружении Kubernetes.

  1. Отобразить текущие поддерживаемые аддоны:

    minikube addons list

    Вывод:

    addon-manager: enabled
    coredns: disabled
    dashboard: enabled
    default-storageclass: enabled
    efk: disabled
    freshpod: disabled
    heapster: disabled
    ingress: disabled
    kube-dns: enabled
    metrics-server: disabled
    nvidia-driver-installer: disabled
    nvidia-gpu-device-plugin: disabled
    registry: disabled
    registry-creds: disabled
    storage-provisioner: enabled
  2. Включить расширение, например, heapster:

    minikube addons enable heapster

    Вывод:

    heapster was successfully enabled
  3. Посмотреть Pod и Service, которые вы только что создали:

    kubectl get pod,svc -n kube-system

    Вывод:

    NAME                                        READY     STATUS    RESTARTS   AGE
    pod/heapster-9jttx                          1/1       Running   0          26s
    pod/influxdb-grafana-b29w8                  2/2       Running   0          26s
    pod/kube-addon-manager-minikube             1/1       Running   0          34m
    pod/kube-dns-6dcb57bcc8-gv7mw               3/3       Running   0          34m
    pod/kubernetes-dashboard-5498ccf677-cgspw   1/1       Running   0          34m
    pod/storage-provisioner                     1/1       Running   0          34m
    
    NAME                           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
    service/heapster               ClusterIP   10.96.241.45    <none>        80/TCP              26s
    service/kube-dns               ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP       34m
    service/kubernetes-dashboard   NodePort    10.109.29.1     <none>        80:30000/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
  4. Отключить heapster:

    minikube addons disable heapster

    Вывод:

    heapster was successfully disabled

Освобождение ресурсов

Теперь вы можете освободить ресурсы созданного вами кластера:

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

Остановите выполнение виртуальной машины Minikube (опционально):

minikube stop

Удалите виртуальную машину Minikube (опционально):

minikube delete

Что дальше

Обратная связь