Minikube — что это, установка и работа в Kubernetes в Ubuntu Linux, Windows и MacOS

Работа в Kubernetes с помощью Minikube

Что такое Minikube, для чего он нужен и чем отличается от Kubernetes.

Введение

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

Что такое Minikube

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

Minikube позволяет быстро развернуть простой кластер Kubernetes на своей локальной машине. Такой кластер хорошо подойдет для первого знакомства с Kubernetes или для локальной разработки приложений. Minikube позволяет легко включать или выключать возможности «большого» Kubernetes (вроде Ingress-контроллера или дашборда) с помощью аддонов. Но Minikube ни в коем случае нельзя рассматривать как полноценный Kubernetes, даже для простых инсталляций.

Установка Minikube

Установить Minikube намного проще, чем Kubernetes. Тем не менее есть несколько предварительных условий, которые должны соблюдаться. Мы рассмотрим установку Minikube на примере трех ОС: Linux, MacOS и Windows.

Шаг 1: проверка поддержки виртуализации

Для работы Minikube необходимо, чтобы ваш процессор поддерживал аппаратную виртуализацию. Большинство современных процессоров поддерживают ее, но лучше заранее убедиться, что все в порядке.

Linux

Выполните команду в терминале:

grep -E --color 'vmx|svm' /proc/cpuinfo

Если вывод команды не пустой и вы видите слова vmx или svm — значит все хорошо, можно продолжать.

MacOS

Выполните команду:

sysctl -a | grep -E --color 'machdep.cpu.features|VMX'

Если в выводе команды есть слово VMX, значит виртуализация поддерживается.

Windows

Выполните команду в cmd или PowerShell:

systeminfo

Если вы видите следующий вывод, значит, виртуализация поддерживается:

Hyper-V Requirements:     VM Monitor Mode Extensions: Yes
                          Virtualization Enabled In Firmware: Yes
                          Second Level Address Translation: Yes
                          Data Execution Prevention Available: Yes

Шаг 2: установка kubectl

Есть несколько разных утилит, с помощью которых можно управлять Kuberntes-кластером: kubectl, Lens, Kubernetes Dashboard и другие. В этой статье мы будем пользоваться консольной утилитой kubectl, которую разрабатывает сообщество Kubernetes.

Установка утилиты отличается на разных ОС, но мы не будем подробно останавливаться на этом, а приведем ссылки на официальную документацию:

Шаг 3: установка гипервизора

Minikube запускается в виртуальной машине, поэтому нам необходимо установить гипервизор. Гипервизор — это программа, которая позволяет на одном компьютере запускать несколько операционных систем и делить между ними системные ресурсы (процессор, память и т.п.). В зависимости от операционной системы можно использовать различные гипервизоры. Мы не будем подробно рассказывать про установку каждого отдельного гипервизора, а перечислим возможные варианты.

Linux

  • VirtualBox. Пожалуй, самый простой в установке и настройке. Присутствует в репозиториях большинства дистрибутивов.
  • KVM. Гипервизор, встроенный в ядро Linux. Более производительное решение, но и более сложное в установке/настройке.
  • Docker / Podman. Это вариант запуска Minikube с помощью Docker или Podman, без установки гипервизора.

MacOS

  • VirtualBox.
  • HyperKit.
  • VMware Fusion.

Windows

Для начала выполните команду в cmd или PowerShell:

systeminfo

Если в результатах есть строка A hypervisor has been detected, значит, у вас уже установлен гипервизор, и дополнительных действий не потребуется. Если же гипервизор не установлен, подойдет один из этих вариантов:

  • VirtualBox,
  • Hyper-V.

Шаг 4: Установка Minikube

Теперь все готово для того, чтобы установить сам Minikube.

Linux

Если репозиториях вашего дистрибутива есть Minikube — предпочтительней установить его с помощью пакетного менеджера. Например, в Archlinux это делается командой:

pacman -S minikube.

Если в репозитории нет этого пакета, тогда скачайте бинарный файл:

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube

Затем переместите файл в директорию, которая указана в вашей переменной $PATH, например, в /usr/local/bin.

MacOS

Если вы пользуетесь пакетным менеджером brew, то установить Minikube можно командой:


brew install minikube

Либо можно просто скачать бинарный файл:

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd6 && chmod +x minikube

Windows

Скачайте последнюю версию установщика, запустите его и следуйте инструкциям.

Начало работы с Minikube

Minikube установлен и готов к работе. Давайте теперь посмотрим, как можно его запустить и пользоваться им.

Запуск Minikube

Выполните команду:

minikube start

Первый запуск может занять несколько минут, потому что Minikube скачивает образ Kubernetes, создает и настраивает кластер. Результат будет выглядеть примерно так (реальный вывод немного сокращен для удобочитаемости):

minikube v1.27.1 on Arch "rolling"
Automatically selected the docker driver. Other choices: virtualbox, ssh
Using Docker driver with root privileges
Starting control plane node minikube in cluster minikube
Pulling base image ...
Downloading Kubernetes v1.25.2 preload ...
 > preloaded-images-k8s-v18-v1 ...
 > gcr.io/k8s-minikube/kicbase ...
Creating docker container (CPUs=2, Memory=3900MB) ...
Preparing setup Kubernetes v1.25.2 on Docker 20.10.18 ...
 ▪ Generating certificates and keys ...
 ▪ Booting up control plane ...
 ▪ Configuring RBAC rules ...
Verifying Kubernetes components...
 ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
Enabled addons: storage-provisioner, default-storageclass
Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

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

Создание контейнера и просмотр его логов

Давайте создадим собственный под (контейнер) и проверим его логи. Мы не будем описывать деплойменты с помощью yaml-файлов, а воспользуемся командой kubectl. Для примера создадим простой сервис с nginx под капотом:


    kubectl create deployment simple-nginx --image=nginx

Проверим список подов и убедимся, что nginx запущен:


    kubectl get po

Результат:


    NAME                               READY   STATUS    RESTARTS      AGE
simple-nginx-8566465446-96gpz      1/1     Running   0             50s

Видим, что под запустился 50 секунд назад и находится в статусе Running. Теперь посмотрим его логи, для этого опять воспользуемся kubectl:


    kubectl logs simple-nginx-8566465446-96gpz

Результат:


    /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2022/10/28 13:37:58 [notice] 1#1: using the "epoll" event method
2022/10/28 13:37:58 [notice] 1#1: nginx/1.23.2
2022/10/28 13:37:58 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6)  
2022/10/28 13:37:58 [notice] 1#1: OS: Linux 5.15.76-1-lts
2022/10/28 13:37:58 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2022/10/28 13:37:58 [notice] 1#1: start worker processes

Использование аддонов

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

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

minikube addons list

По столбцу Status можно определить, какие аддоны уже активированы. При начальной установке Minikube активирует некоторые аддоны, например, storage-provisioner и default-storageclass.

Давайте активируем два аддона: первый будет собирать метрики с контейнеров, а второй — дашборд для управления кластером через браузер:

minikube addons enable metrics-server
minikube addons enable dashboard

Теперь введем команду:

minikube dashboard

В браузере откроется страница с дашбордом. С его помощью вы можете смотреть на состояние кластера, проверять логи, создавать или удалять сущности вроде подов, деплойментов и так далее. Можно сказать, это аналог консольной утилиты kubectl, но с графическим интерфейсом.

графический интерфейс

Остановка Minikube

Чтобы остановить minikube, скомандуйте:

minikube stop

При этом остановится кластер Kubernetes, но всего развернутые в нем приложения и настройки сохранятся. При следующем запуске minikube полностью восстановит свое состояние.

Заключение

Мы показали установку Minikube, рассмотрели основные возможности инструмента, научились активировать дополнительные функции с помощью аддонов, разворачивать собственные сервисы и проверять их состояние.