Как запустить локальный кластер Kubernetes с помощью Minikube
Minikube — это минимальный дистрибутив Kubernetes, предназначенный для использования в локальной разработке. Он разработан в рамках проекта Kubernetes и включает в себя реализации всех основных функций кластера.
Minikube работает на хостах Linux, Mac и Windows. Он может использовать контейнеры или среду виртуальной машины для запуска вашего кластера и его рабочих нагрузок. Вот все поддерживаемые среды выполнения:
- Докер
- Подман
- КВМ
- Гипер-V
- Гиперкит
- Параллели
- Виртуальная коробка
- VMware
Прежде чем продолжить работу с этим руководством, убедитесь, что у вас установлена одна из этих технологий. Процесс установки Minikube автоматически обнаружит доступные среды выполнения и применит соответствующую конфигурацию. Мы покажем вам, как завершить развертывание и начать использовать Minikube.
Установка миникуба
В этом руководстве мы сосредоточимся на системах x86 Linux. Если вы используете Windows, Mac или другую платформу ЦП, обратитесь к документации Minikube, чтобы получить наиболее подробную информацию о настройке. После первоначальной процедуры установки базовое использование Minikube идентично во всех поддерживаемых системах.
Пользователи Linux могут выбирать между прямой загрузкой бинарного файла или пакетом Debian/RPM. В этом примере мы будем использовать бинарную загрузку.
$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 $ sudo install minikube-linux-amd64 /usr/local/bin/minikube
Теперь Minikube будет установлен и готов к использованию.
Запуск кластера Kubernetes
Запустите свой кластер Minikube с помощью команды minikube start
:
$ minikube start minikube v1.25.2 on Ubuntu 20.04 Automatically selected the docker driver. Other choices: kvm2, ssh Starting control plane node minikube in cluster minikube Pulling base image ... Downloading Kubernetes v1.23.3 preload ...
Minikube автоматически загрузит и запустит последнюю версию Kubernetes. Этот процесс может занять несколько минут. Выходные данные команды будут указывать на прогресс и отображать действия, предпринимаемые Minikube. В приведенном выше примере вы можете видеть, что драйвер Docker был выбран для размещения вашего кластера. Обратитесь к документации драйвера Minikube, если ваша контейнерная платформа или стек виртуализации не определяются автоматически.
Использование вашего кластера с Kubectl
Minikube изменяет вашу среду, чтобы вы могли подключиться к своему кластеру, используя существующую установку Kubectl. Он добавит контекст minikube
в ваш файл KUBECONFIG
, предназначенный для вашего кластера Minikube.
Minikube также включает связанную версию Kubectl, доступ к которой можно получить с помощью команды minikube kubectl
. Это полезно, если у вас еще не установлен Kubectl или ваш существующий двоичный файл отличается от версии вашего кластера Minikube.
# Uses the Kubectl version that's bundled with Minikube $ minikube kubectl get pods
В оставшейся части этого руководства мы покажем простую команду kubectl
и предположим, что она нацелена на ваш кластер Minikube. Вы можете настроить псевдоним оболочки для использования связанного с Minikube Kubectl без префикса minikube
каждый раз:
$ alias kubectl="minikube kubectl"
Теперь, когда доступны Minikube live и Kubectl, вы можете добавлять приложения в свой кластер Kubernetes:
$ kubectl create deployment nginx --image=nginx:latest deployment.apps/nginx created $ kubectl expose deployment nginx --type=LoadBalancer --port=80 service/nginx exposed
Команда minikube service
предоставляет открытый URL-адрес службы:
$ minikube service nginx --url http://192.168.49.2:31599
Вставьте URL-адрес в свой веб-браузер (или запустите команду без флага --url
), чтобы просмотреть свой сервис.
Доступ к панели управления Kubernetes
Minikube предоставляет панель инструментов Kubernetes в качестве дополнительной встроенной функции. Запустите команду minikube dashboard
, чтобы загрузить компоненты панели управления и запустить интерфейс в новой вкладке браузера.
Вы можете использовать панель мониторинга для управления своими ресурсами и визуализации их активности. Держите команду minikube dashboard
запущенной в терминале, пока вы взаимодействуете с панелью управления. Когда закончите, завершите команду комбинацией клавиш Ctrl+C.
Включение реестра образов
Minikube включает реестр образов в качестве дополнительного дополнения. Это позволяет хранить образы контейнеров внутри Minikube, делая их доступными для развертывания внутри вашего кластера.
Сначала включите надстройку реестра:
$ minikube addons enable registry
Затем пометьте свое изображение, чтобы оно ссылалось на реестр Minikube. Реестр прослушивает порт 5000 на IP-адресе, предоставленном командой minikube ip
.
$ docker tag my-image:latest $(minikube ip):5000/my-image:latest
Прежде чем вы сможете отправить, Docker должен быть настроен так, чтобы он принимал URL-адрес как небезопасный реестр. Добавьте его в поле insecure-registries
в файле /etc/docker/daemon.json
, чтобы Docker разрешил доступ по HTTP.
{ "insecure-registries": ["192.168.49.2:5000"] }
Замените IP-адрес на тот, который указан в вашей команде minikube ip
. Перезапустите Docker с помощью команды systemctl restart docker
.
Теперь вы можете отправить свой образ в реестр Minikube:
$ docker push $(minikube ip):5000/my-image:latest
Требуется последний шаг, прежде чем поды в вашем кластере смогут использовать этот образ. Среда выполнения контейнера Minikube также должна быть настроена для разрешения небезопасного доступа к реестру. Вы можете включить это, включив флаг --insecure-registry
при запуске minikube start
. IP-адрес должен относиться к IP-адресу кластера по умолчанию вашей установки Minikube. Вы можете получить это, запустив kubectl get services
и просмотрев CLUSTER-IP
для службы kubernetes
. Затем остановите Minikube и перезапустите его с дополнительным флагом.
$ kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 63m
$ minikube stop
$ minikube start --insecure-registry 10.96.0.1/24
Изменение версии Kubernetes
Minikube по умолчанию использует новейшую доступную версию Kubernetes. Чтобы переключиться на определенную версию, включите флаг --kubernetes-version
при запуске кластера:
$ minikube start --kubernetes-version=v1.23.0
Вы можете запускать несколько кластеров одновременно, каждый с разными версиями Kubernetes, создав несколько отдельных профилей. Флаг --profile
выбирает целевой профиль для конкретной команды.
$ minikube start --profile v1.22 --kubernetes-version=v1.22.0
$ minikube start --profile v1.23 --kubernetes-version=v1.23.0
$ minikube --profile v1.22 kubectl get pods
Использование нескольких узлов
Minikube поддерживает несколько виртуальных узлов. Это позволяет вам проверить, как ваше приложение масштабируется на доступных узлах, без развертывания нового физического оборудования.
В этом примере создается кластер с тремя узлами:
$ minikube start --nodes 3
Вы можете убедиться, что несколько узлов доступны, перечислив их с помощью Kubectl:
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane,master 71m v1.23.3
minikube-m02 Ready <none> 71m v1.23.3
minikube-m03 Ready <none> 71m v1.23.3
Включение удаленного доступа
Minikube по умолчанию не принимает входящий трафик. Он предназначен для локального использования и не предназначен для обслуживания внешних запросов. Вы по-прежнему можете включить удаленный доступ к рабочим нагрузкам в своем кластере, изменив адрес прослушивания плоскости управления. Делайте это только после полной оценки рисков — ваша сеть будет открыта для внешнего мира.
$ minikube start --listen-address=0.0.0.0
Перенаправление портов — более безопасное решение, когда вам нужно открыть доступ к определенному сервису. Используйте команду Kubectl port-forward
, чтобы создать маршрут от хост-порта к одному из ваших сервисов:
$ kubectl port-forward service/nginx 8080:80
Теперь вы можете посетить localhost:8080
, чтобы получить доступ к сервису NGINX, созданному ранее в этом руководстве. Порт 8080 на вашем хосте привязан к порту 80 службы.
Удаление миникуба
Одним из преимуществ Minikube является простота его удаления. Если вы решите, что Minikube не для вас, запустите команду delete
, чтобы удалить все, что он добавил в вашу систему:
$ minikube delete
Менее разрушительным вариантом является minikube stop
, который остановит ваш кластер, но оставит все ресурсы нетронутыми. Вы можете перезапустить кластер с помощью команды minikube start
.
Заключение
Minikube — это автономный дистрибутив Kubernetes, который использует контейнеры или виртуализацию для запуска кластера на вашем локальном компьютере. Он поддерживается вышестоящим проектом Kubernetes. Minikube — это полнофункциональная реализация Kubernetes, которая включает в себя панель инструментов Kubernetes, поддержку сети, постоянное хранилище и взаимозаменяемые среды выполнения контейнеров.
Вы можете узнать больше о Minikube в официальной документации. В качестве альтернативы начните использовать знакомые команды Kubectl для управления кластером и развертывания новых рабочих нагрузок. Теперь у вас есть полностью функционирующая локальная среда Kubernetes для создания и тестирования ваших приложений.