Введение / Зачем это нужно
Minikube — это инструмент, который запускает однокластерный Kubernetes на вашей локальной машине. Это идеальное решение для разработчиков и DevOps-инженеров, которые хотят:
- Обучиться основам Kubernetes без доступа к облачному кластеру.
- Разрабатывать и тестировать манифесты (Deployment, Service, и т.д.) локально.
- Пробовать новые версии Kubernetes или его компонентов.
После выполнения этого гайда у вас будет полностью рабочий кластер Kubernetes, управляемый через стандартный CLI-инструмент kubectl.
Требования / Подготовка
Перед началом убедитесь, что ваша система соответствует следующим требованиям:
- ОС: Ubuntu 22.04+, Debian 11+ или любая другая современная дистрибутив на базе systemd.
- Права: Доступ к
sudoдля установки пакетов и управления службами. - Ресурсы:
- RAM: минимум 2 ГБ, рекомендуется 4 ГБ.
- CPU: минимум 2 ядра.
- Дисковое пространство: минимум 20 ГБ свободного места.
- Драйвер виртуализации: Мы будем использовать Docker как драйвер, так как это самый простой путь на Linux. У вас должен быть установлен и запущен Docker.
Пошаговая инструкция
Шаг 1: Установка и запуск Docker
Minikube требует наличия работающего контейнерного рантайма. Docker — наиболее стойкий выбор.
# Обновляем кэш пакетов
sudo apt-get update
# Устанавливаем необходимые пакеты для работы с HTTPS-репозиториями
sudo apt-get install -y ca-certificates curl gnupg
# Добавляем официальный GPG-ключ Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Добавляем репозиторий Docker (для Ubuntu, для Debian замените на соответствующий)
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Устанавливаем Docker Engine и компоненты
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Добавляем текущего пользователя в группу docker (чтобы не использовать sudo)
sudo usermod -aG docker $USER
newgrp docker # Применяем изменения группы без перезахода в систему
# Запускаем и включаем автозагрузку службы Docker
sudo systemctl start docker
sudo systemctl enable docker
# Проверяем, что Docker работает
docker run hello-world
Если команда docker run hello-world завершилась с выводом "Hello from Docker!", драйвер готов.
Шаг 2: Установка Minikube
Скачаем последнюю стабильную версию Minikube с официального репозитория GitHub.
# Определяем последнюю версию (на момент написания — v1.33.1)
MINIKUBE_VERSION="v1.33.1"
# Скачиваем бинарный файл
curl -LO https://storage.googleapis.com/minikube/releases/${MINIKUBE_VERSION}/minikube-linux-amd64
# Устанавливаем в /usr/local/bin
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# Проверяем установку
minikube version
Шаг 3: Запуск кластера Minikube
Теперь можно создать и запустить кластер. Мы явно укажем драйвер docker и выделим 4 ГБ оперативной памяти.
# Останавливаем предыдущий кластер, если он есть (необязательно)
minikube stop
# Запускаем новый кластер с параметрами:
# --driver=docker: использовать Docker как драйвер виртуализации
# --memory='4g': выделить 4 ГБ RAM
# --cpus=2: выделить 2 CPU ядра
minikube start --driver=docker --memory='4g' --cpus=2
⚠️ Важно: Первый запуск может занять 5-10 минут, так как Minikube будет скачивать образ Kubernetes (
k8s.gcr.io/kube-apiserverи др.) размером несколько сотен мегабайт.
После успешного завершения вы увидите сообщение Done! kubectl is now configured to use "minikube" cluster....
Шаг 4: Проверка работоспособности и настройка kubectl
Убедимся, что кластер запущен и доступен через kubectl.
# Показать статус кластера
minikube status
# Должен быть вывод, где все компоненты в состоянии Running.
# Пример:
# host: Running
# kubelet: Running
# apiserver: Running
# kubeconfig: Configured
# Проверим доступность кластера через kubectl
kubectl cluster-info
# Получим список нод (в Minikube она всегда одна)
kubectl get nodes
# Пробный деплой: создадим nginx-под
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --type=NodePort --port=80
# Проверим, что под работает
kubectl get pods,svc
# Получим URL для доступа к nginx в браузере
minikube service nginx
Шаг 5: Полезные команды и настройка
- Остановка кластера (сохраняет состояние):
minikube stop - Удаление кластера (полная очистка):
minikube delete - Доступ к консоли ноды (как к виртуальной машине):
minikube ssh - Установка драйвера по умолчанию (чтобы не указывать
--driverкаждый раз):minikube config set driver docker - Обновление Minikube:
minikube update
Проверка результата
Выполните следующие команды. Если все они возвращают успешный результат (Running, список объектов), установка прошла корректно:
minikube status— все компонентыRunning.kubectl get nodes— нода в статусеReady.kubectl get pods -A— системные поды (coredns, etcd, kube-apiserver и др.) в статусеRunning.minikube service list— сервисы, созданные вами, отображаются.
Возможные проблемы
Проблема: minikube start завершается с ошибкой Failed to start host: ...
Причина и решение:
- Недостаточно памяти/CPU. Увеличьте параметры
--memoryи--cpus. Например,--memory=6g --cpus=3. - Порт 8443 занят (используется другим процессом или другим Minikube-кластером). Остановите конфликтующий процесс или удалите старый кластер (
minikube delete). - Docker не работает. Проверьте
systemctl status docker. Если служба не активна, запустите её.
Проблема: kubectl не найден или kubectl: command not found
Причина и решение: Установите kubectl отдельно.
# Установка kubectl (актуальная версия)
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
Проблема: Ошибки вида Error: failed to pull image ... или ImagePullBackOff
Причина и решение: Minikube/Docker не может скачать образ из k8s.gcr.io. Чаще всего это проблема с сетью или DNS. Проверьте доступ в интернет с машины. Можно попробовать использовать другой реестр (например, registry.k8s.io) или настроить прокси для Docker.
Проблема: minikube ssh не работает или зависает
Причина и решение: Проблема с драйвером. Убедитесь, что Docker-контейнер с кластером существует: docker ps | grep minikube. Если контейнер не запущен, попробуйте minikube start --alsologtostderr для подробного лога и minikube delete с последующим чистым запуском.