Введение / Зачем это нужно
Minikube — это инструмент, который запускает однодневный (single-node) кластер Kubernetes на вашем локальном компьютере под управлением Linux. Это идеальная среда для:
- Обучения основам Kubernetes без затрат на облачные ресурсы.
- Разработки и тестирования приложений в контейнерах локально.
- Пробных развёртываний манифестов (YAML-файлов) перед отправкой в продакшен-кластер.
После прохождения этого гайда у вас будет работающий кластер Kubernetes, доступный через стандартный CLI-инструмент kubectl.
Требования / Подготовка
Перед началом убедитесь, что:
- У вас есть Linux-дистрибутив (Ubuntu/Debian/Fedora/CentOS и т.д.) с доступом к
sudo. - Включена виртуализация в BIOS/UEFI (технологии Intel VT-x или AMD-V). Обычно проверяется командой:
Если вывод пуст, нужно зайти в BIOS и активировать опцию (называется "Virtualization Technology", "SVM Mode" или подобное).grep -E --color '(vmx|svm)' /proc/cpuinfo - Выбран и установлен драйвер. Minikube использует драйвер для создания виртуальной машины. Самые популярные варианты:
docker(рекомендуется): требует установленного Docker. Быстро и эффективно.virtualbox: требует установленного VirtualBox. Подходит, если Docker нежелателен.kvm2: для систем, использующих KVM (в основном RHEL-совместимые дистрибутивы). Требует установкиlibvirtиqemu-kvm.
Установка выбранного драйвера
Если выбираете Docker:
# Для Ubuntu/Debian
sudo apt update
sudo apt install -y docker.io
sudo systemctl enable --now docker
sudo usermod -aG docker $USER
newgrp docker # Применить изменения группы без перезахода
Если выбираете VirtualBox:
# Для Ubuntu/Debian
sudo apt update
sudo apt install -y virtualbox virtualbox-ext-pack
# Для Fedora
sudo dnf install -y VirtualBox
Если выбираете KVM2 (для Fedora/CentOS/RHEL):
sudo dnf install -y @virtualization
sudo systemctl enable --now libvirtd
sudo usermod -aG libvirt $USER
newgrp libvirt
sudo virt-install --connect qemu:///system --name minikube --memory 2048 --disk size=20 --os-variant generic --import
Пошаговая инструкция
Шаг 1: Установка зависимостей и менеджера пакетов
Убедимся, что система обновлена и установлены базовые утилиты (curl, wget, gnupg).
Для Ubuntu/Debian:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget gnupg apt-transport-https ca-certificates
Для Fedora/CentOS/RHEL:
sudo dnf update -y
sudo dnf install -y curl wget gnupg2
Шаг 2: Загрузка и установка бинарника Minikube
Скачаем последнюю стабильную версию Minikube. На момент написания это v1.30.1.
# Скачивание
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
# Установка в систему
sudo install minikube-linux-amd64 /usr/local/bin/minikube
Проверьте установку:
minikube version
# Вывод должен быть примерно: minikube version: v1.30.1
Шаг 3: Запуск Kubernetes-кластера
Теперь запустим Minikube. Укажите драйвер, соответствующий установленному вами ПО. Пример для Docker:
minikube start --driver=docker
Что происходит:
- Minikube проверяет наличие драйвера.
- Скачивает образ Kubernetes (
k8s.gcr.io/kube-apiserverи др., ~1.5 ГБ). - Создаёт и запускает виртуальную машину/контейнер с именем
minikube. - Настраивает
kubectl(локальный конфиг~/.kube/config).
Первый запуск может занять 5-10 минут в зависимости от скорости интернета.
Если возникла ошибка, связанная с драйвером, можно явно указать его:
# Для VirtualBox
minikube start --driver=virtualbox
# Для KVM2
minikube start --driver=kvm2
Шаг 4: Настройка kubectl и проверка статуса
Установите kubectl — CLI-инструмент для управления Kubernetes.
Установка kubectl (Ubuntu/Debian):
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 видит ваш кластер:
kubectl cluster-info
# Вывод должен содержать: Kubernetes control plane is running at https://192.168.49.2:8443
Проверьте статус узлов:
kubectl get nodes
# Ожидаемый вывод:
# NAME STATUS ROLES AGE VERSION
# minikube Ready control-plane 1m v1.26.3
Также можно использовать встроенную команду Minikube:
minikube status
# Должно показать: host: Running, kubelet: Running, apiserver: Running, kubeconfig: Configured
Проверка результата
Кластер готов к работе, если выполнены два условия:
minikube statusпоказываетRunningдля всех компонентов.kubectl get nodesвыводит узелminikubeв статусеReady.
Быстрый тест: развернём простейшее приложение (nginx) и убедимся, что оно доступно.
# Развернуть deployment
kubectl create deployment nginx --image=nginx
# Экспортировать service как NodePort для доступа извне Minikube
kubectl expose deployment nginx --type=NodePort --port=80
# Узнать порт
kubectl get svc nginx
# В колонке PORT(S) будет что-то вроде: 80:3xxxx/TCP
# Получить IP Minikube (обычно 192.168.49.2)
minikube ip
# Проверить доступ (замените <PORT> на реальный)
curl $(minikube ip):<PORT>
# Должен вернуть HTML-код страницы nginx
Возможные проблемы
Ошибка: Failed to start host: Creating host: create: precreate: Default frontend driver conflicts with another host...
Причина: Уже существует виртуальная машина с именем minikube (возможно, от прошлого неудачного запуска).
Решение:
minikube delete --all # Удалить все кластеры
minikube start --driver=<ваш_драйвер> # Запустить заново
Ошибка: Exiting due to DRV_NOT_FOUND: The specified driver "docker" is not installed
Причина: Драйвер docker выбран, но сам Docker не установлен или не запущен.
Решение: Установите Docker (см. Шаг 0) и убедитесь, что служба активна (sudo systemctl status docker).
Ошибка: This computer doesn't have VT-x/AMD-v
Причина: Виртуализация отключена в BIOS/UEFI или процессор не поддерживает.
Решение: Включите виртуализацию в BIOS. Если процессор старый, Minikube может не поддерживаться. В этом случае попробуйте драйвер docker (не требует аппаратной виртуализации) или none (работает напрямую на хосте, но требует сложной настройки).
Проблемы с памятью/диском
Симптом: Minikube зависает на этапе Downloading Kubernetes v1.xx.x или Starting cluster.
Решение: Увеличьте выделяемую память. Minikube по умолчанию выделяет 2 ГБ. Запустите с явным указанием:
minikube start --driver=docker --memory=4096 --cpus=2
Ошибка: Error: failed to download: context deadline exceeded
Причина: Проблемы с сетью или блокировка скачивания образов. Решение:
- Проверьте интернет-соединение.
- Попробуйте использовать прокси или зеркало. Например, для Docker-драйвера можно предварительно загрузить образы в локальный репозиторий.
После перезагрузки kubectl не видит кластер
Причина: Конфигурация kubectl хранится в ~/.kube/config. Minikube может не восстановить соединение автоматически.
Решение: Просто выполните minikube start снова. Он скопирует актуальную конфигурацию. Или вручную:
minikube update-context