Работа в 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, рассмотрели основные возможности инструмента, научились активировать дополнительные функции с помощью аддонов, разворачивать собственные сервисы и проверять их состояние.