Введение / Зачем это нужно
Minikube — это инструмент, который запускает локальный однокластерный кластер Kubernetes на вашей машине. Он идеально подходит для:
- Обучения и разработки: Позволяет изучать Kubernetes без доступа к облаку и без затрат.
- Тестирования манифестов: Вы можете безопасно проверять конфигурации
Deployment,Service,Ingressперед деплоем в продакшен. - Локальной отладки: Запускать и отлаживать приложения в окружении, максимально приближенном к реальному Kubernetes.
После выполнения этого гайда у вас будет полностью рабочий кластер Kubernetes, доступный через kubectl, и вы сможете разворачивать на него свои приложения.
Требования / Подготовка
Перед началом убедитесь, что ваша система соответствует следующим требованиям:
- ОС: Любой современный дистрибутив Linux (Ubuntu, Debian, Fedora, CentOS, Arch и т.д.).
- Виртуализация: Включенная поддержка виртуализации (Intel VT-x / AMD-V) в BIOS/UEFI. Проверить можно командой:
Если вывод пуст, включите виртуализацию в настройках BIOS/UEFI.grep -E --color '(vmx|svm)' /proc/cpuinfo - Ресурсы: Минимум 2 ГБ свободной RAM (рекомендуется 4+ ГБ) и 20 ГБ свободного дискового пространства.
- Доступ к интернету: Для загрузки образов и бинарников.
- Права: Пользователь должен иметь права на запуск
sudo(для некоторых драйверов) и доступ к Docker-демону (если используете драйверdocker).
Установка обязательных компонентов
1. Установка Docker (рекомендуемый драйвер) Minikube может использовать Docker в качестве среды выполнения контейнеров. Установите Docker Engine:
# Для Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y docker.io
# Добавьте текущего пользователя в группу docker, чтобы не использовать sudo
sudo usermod -aG docker $USER
newgrp docker # Применить изменения группы без перезагрузки
Примечание: Если вы предпочитаете Podman, установите его (sudo apt install podman) и используйте драйвер podman.
2. Установка kubectlkubectl — CLI-инструмент для управления Kubernetes. Установите его:
# Скачивание последней стабильной версии
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
# Установка
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# Проверка версии
kubectl version --client
3. Установка дополнительных утилит (опционально) В зависимости от выбранного драйвера могут понадобиться:
- virtualbox:
sudo apt install virtualbox - kvm2:
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utilsПосле установки добавьте пользователя в группыkvmиlibvirt.
Пошаговая инструкция
Шаг 1: Скачивание и установка Minikube
Скачайте исполняемый файл Minikube, соответствующий вашей архитектуре (обычно amd64).
# Определение последней версии
MINIKUBE_VERSION=$(curl -L -s https://github.com/kubernetes/minikube/releases/latest | grep -oP '(?<=tag/v)[0-9.]+')
# Скачивание
curl -LO https://github.com/kubernetes/minikube/releases/download/v${MINIKUBE_VERSION}/minikube-linux-amd64
# Установка в системную директорию
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# Очистка временного файла
rm minikube-linux-amd64
# Проверка установки
minikube version
Шаг 2: Выбор и настройка драйвера
Minikube использует драйверы для создания виртуальной машины или контейнера. Лучший выбор для Linux — docker или podman, так как они не требуют дополнительной виртуализации и работают быстрее.
Проверьте, какой драйвер доступен по умолчанию:
minikube driver list
Для драйвера docker (рекомендуется):
Убедитесь, что Docker демон запущен и ваш пользователь в группе docker (см. подготовку). Минимальная настройка не требуется.
Для драйвера kvm2 (альтернатива):
# Проверьте, запущен ли libvirtd
sudo systemctl status libvirtd
# Если нет, запустите и включите автозагрузку
sudo systemctl enable --now libvirtd
Вы можете явно указать драйвер при первом запуске minikube start --driver=docker. Чтобы установить драйвер глобально:
minikube config set driver docker
Шаг 3: Запуск кластера Minikube
Теперь запустите кластер. Базовый запуск с драйвером docker:
minikube start --driver=docker
Настройка ресурсов (важно для производительности): Рекомендуется явно задать объем памяти и количество CPU, особенно если у вас мало ресурсов или вы используете драйвер виртуализации (virtualbox, kvm2).
# Пример: 4 CPU, 8 ГБ RAM, образ Kubernetes v1.28.x
minikube start --driver=docker --cpus=4 --memory=8192 --kubernetes-version=v1.28.0
Аргументы командной строки:
--driver: Драйвер (docker,podman,virtualbox,kvm2,none).--cpus: Количество виртуальных CPU.--memory: Объем RAM в МБ (например,4096для 4 ГБ).--disk-size: Размер диска (по умолчанию 20ГБ), например--disk-size=50g.--kubernetes-version: Конкретная версия Kubernetes (по умолчанию последняя стабильная).
Процесс может занять 2-5 минут: Minikube скачивает образ ISO/образ Docker с Kubernetes, настраивает сеть и запускает компоненты кластера.
Шаг 4: Проверка работы кластера
После успешного завершения minikube start выполните:
# 1. Проверьте статус кластера
minikube status
# Ожидаемый вывод: host: Running, kubelet: Running, apiserver: Running, ...
# 2. Посмотрите ноды (должна быть одна - 'minikube')
kubectl get nodes
# NAME STATUS ROLES AGE VERSION
# minikube Ready control-plane 5m v1.28.0
# 3. Проверьте системные поды (все должны быть в статусе Running)
kubectl get pods -A
Важно: kubectl автоматически настроен на работу с кластером Minikube благодаря скрипту-обёртке. Вы можете использовать minikube kubectl -- <command> для гарантии, но после minikube start контекст minikube уже активен.
Проверка результата
Кластер считается успешно установленным, если выполняются все три условия:
minikube statusпоказываетRunningдля всех компонентов.kubectl get nodesвыводит нодуminikubeсо статусомReady.kubectl cluster-infoпоказывает адреса Kubernetes control plane и CoreDNS.
Вы можете также протестировать развертывание тестового приложения:
kubectl create deployment hello-minikube --image=kicbase/echo-server:1.0
kubectl expose deployment hello-minikube --type=NodePort --port=8080
minikube service hello-minikube # Откроет сервис в браузере
Возможные проблемы
❌ Ошибка: Failed to start host: Creating host: creating kic cluster: create: context deadline exceeded
Причина: Docker-образ kicbase не загрузился из-за проблем с сетью или нехватки дискового пространства.
Решение:
- Проверьте свободное место (
df -h). - Очистите неиспользуемые Docker-образы:
docker system prune -a. - Принудительно перезапустите с очисткой кэша:
minikube delete && minikube start --driver=docker --force.
❌ Ошибка: This computer doesn't have VT-x/AMD-v virtualization enabled
Причина: Виртуализация отключена в BIOS/UEFI.
Решение: Перезагрузите компьютер, войдите в BIOS/UEFI (клавиша Del/F2/F10) и включите опции Intel VT-x или AMD-V. Сохраните настройки и перезагрузитесь.
❌ Ошибка: Exiting due to DRV_NOT_FOUND: The specified driver "docker" is not installed
Причина: Драйвер docker не найден (Docker не установлен или не запущен).
Решение: Установите Docker и убедитесь, что демон работает (sudo systemctl start docker). Проверьте, что ваш пользователь в группе docker (groups $USER).
❌ Ошибка: Failed to configure pod network: network plugin cni failed to set up...
Причина: Конфликт CNI-плагинов или блокировка фаервола. Решение:
- Удалите кластер:
minikube delete. - Временно отключите фаервол (
sudo ufw disableилиsudo systemctl stop firewalld) и попробуйте снова. - Используйте другой CIDR для сети подов:
minikube start --pod-cidr=10.244.0.0/16.
❌ Ошибка: Error: EACCES: permission denied, access '/var/run/docker.sock'
Причина: Текущий пользователь не имеет прав на доступ к Docker-сокету.
Решение: Добавьте пользователя в группу docker (sudo usermod -aG docker $USER) и перелогиньтесь или выполните newgrp docker.
❌ Проблема: Minikube завершает работу после перезагрузки хоста
Причина: Minikube не настроен на автозапуск (по умолчанию так и есть).
Решение: Это ожидаемое поведение. Minikube — инструмент для разработки. Для постоянного кластера используйте полноценное развертывание Kubernetes. Чтобы быстро вернуть кластер, выполните minikube start.
Дополнительные команды и управление
- Остановка кластера (сохранение состояния):
minikube stop - Удаление кластера (полная очистка):
minikube delete - Включение/отключение дополнений ( ingress, dashboard, metrics-server):
minikube addons enable ingress minikube addons disable ingress - Доступ к консоли ноды (например, для отладки Docker):
minikube ssh - Получение конфигурации kubectl для другого контекста:
minikube kubectl -- <kubectl command>или экспорт:kubectl config use-context minikube.
Заключение
Вы успешно установили и запустили локальный кластер Kubernetes с помощью Minikube на Linux. Теперь вы можете:
- Изучать
kubectlкоманды. - Развертывать манифесты в формате YAML.
- Тестировать
Helm-чарты. - Пробовать различные сетевые политики и ингрессы.
Для продолжения обучения изучите официальную документацию Kubernetes или попробуйте развернуть простое приложение, например, Nginx, следуя нашему гайду по базовым Deployment и Service.
Что дальше? Узнайте, как управлять конфигурацией кластера через kubectl в нашем гайде Конфигурирование контекстов kubectl для нескольких кластеров.