17 июля 2022 г.
1011

Установка одноузлового кластера Minikube

Minikube, инструмент для запуска одноузлового кластера Kubernetes на виртуальной машине в персональном компьютере.

Нужно, чтоб была включена поддержка виртуализации.

Minikube может работать используя docker, virtualbox, hyper-v. Но в docker пока не работает ingress. Соответственно, для работы с minikube что то из этого должно быть установлено.

Для работы нужно установить сам minikube и kubectl для управления кластером.

Minikube нельзя установить внутри виртуальной машины.

Установка на windows 10

Установить virtualbox или docker, так как minikube работает на виртуальной машине или в контейнере docker. При запуске автоматически создается виртуальная машина или контейнер.

Добавить в переменную PATH:
зайти в свойства системы, нажать Переменные среды, найти переменную PATH, нажать Изменить и добавить путь, в котором будет содержатся kubectl. Или вместо добавления в PATH, можно сделать алиас командой
Set-Alias -Name kubectl -Value C:\Kubectl\kubectl

Скачать kubectl и положить в папку добавленную в предыдущем пункте.

kubectl можно не устанавливать отдельно, а использовать встроенный в minikube. Но тогда нужно вводить команды kubectl в виде
minikube kubectl --
например
minikube kubectl -- get nodes
чтобы не вводить команду целиком - можно сделать алиас командой
Set-Alias -Name kubectl -Value minikube kubectl --
Проверить работоспособность kubectl можно командой
kubectl version --client
Можно скачать minikube по ссылке и установить. Или же можно установить командой
choco install minikube

Если нужен Helm, его можно скачать по ссылке.

Установка в Ubuntu

Чтобы установить minikube в linux нужно сначала установить или virtualbox или docker.

Установка kubectl через репозиторий:
добавление ключа репозитория
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
добавление репозитория
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
установка kubectl
apt update
apt install kubectl
Установка kubectl скачав файл:
скачивание файла kubectl
curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
добавление разрешения на выполнение
chmod +x ./kubectl
перенос в каталог из переменной PATH
mv ./kubectl /usr/local/bin/kubectl
Установка minikube:
скачивание файла minikube
wget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 -O /usr/bin/minikube
добавление разрешения на выполнение
chmod +x /usr/bin/minikube

Запуск minikube

При запуске minikube в папке пользователя создается папка .kube в которой находится файл config, в нем описана конфигурация кластера с которым работает minikube. Образ minikube скачивается в папку пользователя в .minikube\cache\iso.

Запуск minikube осуществляется командой
minikube start --driver=virtualbox
или
minikube start --driver=docker
в зависимости от того, на чем будет работать minikube. При запуске с использованием virtualbox лучше отключить docker, если он есть, так как могут возникнуть ошибки.
Если при запуске minikube возникает ошибка "Exiting due to HOST_VIRT_UNAVAILABLE: Failed to start host: creating host: create: precreate: This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory", то можно попробовать запустить с ключом --no-vtx-check
minikube start --driver=virtualbox --no-vtx-check
При запуске minikube можно указать количество выделяемых ядер, памяти, дискового пространства, например
minikube start --driver=virtualbox --cpus=4 --memory=8gb --disk-size=25gb
По умолчанию выделяется 2 ядра, 2 ГБ оперативной памяти.
После запуска minikube можно проверить работоспособность командой
minikube status
проверить работоспособность компонентов
kubectl get componentstatuses
посмотреть информацию о кластере
kubectl cluster-info
посмотреть из каких нод состоит кластер
kubectl get nodes
Для остановки minikube используется команда
minikube stop
при этом виртуальная машина не удаляется и то, что в ней было создано сохраняется.
Для остановки minikube используется команда
minikube stop
при этом виртуальная машина не удаляется и то, что в ней было создано сохраняется.
Для удаления виртуальной машины minikube используется команда
minikube delete
Для удаления виртуальной машины minikube и всего кэша используется команда
minikube delete --purge=true --all=true
при повторном запуске minikube после этой команды будет заново скачан образ и созданы все необходимые файлы.
Чтобы была возможность собрать и загрузить свой образ внутрь minikube для дальнейшего использования
в windows нужно выполнить команду
& minikube -p minikube docker-env --shell powershell | Invoke-Expression
в linux команду
eval $(minikube docker-env)
после нее любая команда docker, запущенная в текущем терминале, будет работать внутри кластера minikube. А команда docker build соберет образ внутри minikube.

Команды minikube

  • minikube start --driver=virtualbox запуск minikube с созданием виртуальной машины на virtualbox
  • minikube start --driver=docker запуск minikube с созданием контейнера в docker
  • minikube start --driver=virtualbox --no-vtx-check позволяет запустить minikube если появляется ошибка "Exiting due to HOST_VIRT_UNAVAILABLE: Failed to start host: creating host: create: precreate: This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory" при включенной виртуализации
  • minikube status проверка статуса minikube
  • minikube stop остановка minikube
  • minikube delete удаление minikube
  • minikube delete --purge=true --all=true полное удаление
  • minikube logs логи minikube
  • minikube addons list список доступных для подключения дополнений
  • minikube addons enable ingress подключение дополнения ingress
  • minikube tunnel открытие туннеля для доступа к службам типа LoadBalancer
  • minikube profile list вывод списка всех профилей (кластеров) minikube
  • minikube dashboard открытие web-страницы управления кластером kubernetes
  • minikube service my-service переход к сервису по адресу
  • minikube service my-service --url получить адрес для подключения к сервису
  • minikube ip получение ip-адреса кластера