Перейти к содержанию

Minikube

Информация

Minikube - это утилита командной строки, которая позволяет легко развертывать локальный кластер Kubernetes. Она полезна для разработчиков, которым нужна локальная среда Kubernetes для тестирования и разработки приложений.

Minikube. Основные возможности

  • Быстрый запуск локального кластера Kubernetes - minikube позволяет запустить одноузловый кластер Kubernetes на локальной машине всего за несколько минут. Не нужно проходить сложную настройку или поднимать полноценный многузловой кластер.
  • Поддержка разных драйверов виртуализации - кластер в minikube может запускаться внутри VirtualBox, Hyper-V, VMware, а также нативно на Linux, macOS и Windows. Это дает гибкость в выборе способа развертывания.
  • Автоматическая настройка kubectl - после запуска кластера minikube автоматически настраивает kubectl для подключения к нему. Нет необходимости вручную конфигурировать клиент Kubernetes.
  • Встроенный дашборд и приложения - в кластер из коробки добавляется дашборд, heapster, ingress-контроллер и другие полезные инструменты. Это ускоряет начало работы.
  • Удобные команды управления - minikube start, stop, delete и другие команды позволяют легко управлять жизненным циклом кластера прямо из терминала.
  • Режимы изоляции сети - есть возможность запускать кластер в режиме host-only сети для изоляции от основной сети.
  • Поддержка аддонов - дополнительные функции можно подключать через аддоны, например, мониторинг, логирование, визуализацию и т.д.
  • Интеграция со службами облака - kubectl и дашборд могут настраиваться для работы с удаленными кластерами в облаке.

Особенности сборки

  • Возможна установка на ОС Ubuntu Desktop.

Начало работы после развертывания Minikube

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

Данные для авторизации, которые можно найти или во вкладке Info >> Tags панели управления сервером или в присланном e-mail:

  • Пароль: приходит в письме на вашу электронную почту при сдаче сервера.

Для работы с сервисом необходимо подключиться к серверу по SSH:

ssh root@<server_ip>
И выполнить команду start, которая автоматически создаст локальный кластер Kubernetes с использованием нескольких контейнеров Docker и последней стабильной версии Kubernetes:

minikube start

Выполнение команды займет некоторое время и должно вывести информацию, что kubectl настроен.

Примечание

Если нужно запустить minikube с нестандартной версией Kubernetes для проверки совместимости, можно использовать команду minikube start с параметром --kubernetes-version, например, v1.2.3.

При установке minikube через Homebrew также устанавливается kubectl - основной инструмент управления кластерами Kubernetes из командной строки. Теперь можно выполнить команду kubectl get, как и для любого другого кластера Kubernetes, чтобы перечислить все запущенные поды:

kubectl get pods -A
Параметр -A возвращает поды из всех пространств имён.

После выполнения указанных действий будет создан локальный кластер Kubernetes, с которым можно работать, используя стандартные инструменты Kubernetes, например kubectl.

Для доступа к дашборду можно использовать команду:

minikube dashboard
После ее выполнения будет выведена ссылка, например, http://127.0.0.1:42049/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/. Её необходимо отредактировать - указать IP-адрес сервера, после чего перейти к просмотру дашборда.

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

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

Сделать под доступным из публичного интернета можно с помощью команды kubectl expose:

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

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

Код приложения в тестовом образе прослушивает только TCP-порт 8080. Если выставить для приложения доступность по другому порту в команде kubectl expose, клиенты не смогут подключиться к этому порту.

Проверить созданный сервис можно командой:

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.

Запустить команду:

minikube service hello-node

В результате выполнения команды будет открыто окно браузера, в котором запущено приложение и выводится его ответ.

Примечание

Подробная информация по основным настройкам Minikube содержится в документации разработчиков.

Заказ Minikube с помощью API

curl -s "https://invapi.hostkey.ru/eq.php" -X POST \
--data "action=order_instance" \
--data "token=" \
--data "deploy_period=" \
--data "deploy_notify=" \
--data "email=" \
--data "pin=" \
--data "id=" \
--data "os_id=" \
--data "root_pass=" \
--data "hostname=" \
--data "ssh_key=" \
--data "post_install_callback=" \
--data "post_install_script=" \
--data "reinstall_key=" \
--data "os_name=" \
--data "imitate_deploy=" \
--data "imitate_error=0" \
--data "own_os=" \
--data "jenkins_task=" \
--data "traffic_plan=" \
--data "invoice_relid=" \
--data "preset=" \
--data "location_name=" \