Выдержка из офф. докумментации minikube — это локальный Kubernetes(k8s), нацеленный на упрощение изучения и разработки для Kubernetes, а так же это облегченная реализация виртуальной машины, один из немногих способов легко развернуть локальную среду Kubernetes для целей разработки и обучения.
Для работы необходимо, чтобы ваш процессор поддерживал аппаратную виртуализацию
1 2 3 4 5 |
$ grep -E --color 'vmx|svm' /proc/cpuinfo flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat umip flush_l1d arch_capabilities vmx flags : vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid shadow_vmcs pml flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt arat umip flush_l1d arch_capabilities vmx flags : vnmi preemption_timer posted_intr invvpid ept_x_only ept_ad ept_1gb flexpriority apicv tsc_offset vtpr mtf vapic ept vpid unrestricted_guest vapic_reg vid shadow_vmcs pml |
Если вывод пустой, то вероятнее всего ваш процессор не поддерживает аппратную виртуализацию и вы не сможете нормально запустить minikube
Наш тестовый стенд:
1 2 |
$ cat /etc/os-release | grep PRE PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" |
Исходя из документации, для работы нужно 2 ядра CPU, 2gb RAM и не менее 20gb под файловую систему. Сразу замечу, что для развертывания не подойдет LXC
контейнер, minikube
в нем не запустится, лучше выбрать развертывание на железе или VM
.
Minikube предлагает разные драйвера для оркестрации инфраструктурой, но как самый простой вариант для обучения, я выберу docker
драйвер.
Для начала нам необходимо подготовить систему, обновить и установить необходимые пакеты для дальнейшей работы:
1 2 |
# apt update && apt upgrade -y # apt install sudo ca-certificates curl |
После того как sudo
будет установлен, добавим нашего пользователя user
в группу sudo
:
1 |
# usermod -aG sudo user |
Теперь мы можем перезайти под нашим пользователем user
и продолжить настройку. Для начала настроим docker
согласно офф.дуокументации.
Согласно документации удаляем удаление всех конфликтующих пакетов:
1 |
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done |
Далее нам небходимо добавить ключь репозитория docker
, а так же сам репозиторий
1 2 3 4 5 6 7 8 9 10 11 |
# Add Docker's official GPG key: sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update |
Теперь когда подготовительный этап выполнен, мы можем приступить к установки docker
1 |
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin |
После установки docker
мы перейдем к установки и настройки самого minikube
1 2 |
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb sudo dpkg -i minikube_latest_amd64.deb |
Теперь укажим minikube
по умолчанию использовать драйвер docker
1 |
minikube config set driver docker |
И можем запускать наш мини кубернетес:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
$ minikube start * minikube v1.33.1 на Debian 12.6 (kvm/amd64) * Используется драйвер docker на основе существующего профиля * Starting "minikube" primary control-plane node in "minikube" cluster * Pulling base image v0.0.44 ... * Перезагружается существующий docker container для "minikube" ... * Подготавливается Kubernetes v1.30.0 на Docker 26.1.1 ... * Компоненты Kubernetes проверяются ... - Используется образ docker.io/kubernetesui/dashboard:v2.7.0 - Используется образ registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.4.1 - Используется образ docker.io/kubernetesui/metrics-scraper:v1.0.8 - Используется образ registry.k8s.io/ingress-nginx/controller:v1.10.1 - Используется образ registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.4.1 - Используется образ gcr.io/k8s-minikube/storage-provisioner:v5 * Some dashboard features require the metrics-server addon. To enable all features please run: minikube addons enable metrics-server * Verifying ingress addon... * Включенные дополнения: storage-provisioner, dashboard, default-storageclass, ingress * kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A' * Готово! kubectl настроен для использования кластера "minikube" и "default" пространства имён по умолчанию |
Так как у нас не установлен kubectl
нам нужно будет использовать команду minikube kubectl
или можно создать алиас окрежения:
1 |
$ echo 'alias kubectl="minikube kubectl --"' >> ~/.bashrc |
После того как перелогинимся под нашим пользователем, у нас станет доступна команда kubectl
которая входит в поставку minikube
.
Теперь можем проверить состояние нашего локального кластера:
1 2 3 4 5 6 7 |
$ minikube status minikube type: Control Plane host: Running kubelet: Running apiserver: Running kubeconfig: Configured |
Все, поздравляю вас, наш мини кластер kubernetes
запущен! Для дополнительного понимания состояния нашего кластера, существует Kubernetes Dashboard
, что позволяет вам легко адаптироваться в новой среде, для этого можно выполнить команду:
1 2 3 4 5 6 |
$ minikube dashboard * Verifying dashboard health ... * Launching proxy ... * Verifying proxy health ... * Opening http://127.0.0.1:44911/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser... http://127.0.0.1:44911/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ |
После этой команды у вас автомтически откроется браузер с дашбордом, если вы разворачиваете все на локальном компьютере, а если разворачивали на сервере, то попасть в интрефейс дашборда можно только с помощью kubectl proxy
1 2 |
$ kubectl proxy --address='0.0.0.0' --accept-hosts='^*$' Starting to serve on [::]:8001 |
Но есть одна проблема, этот вариант работает только в stateless режиме, т.е. при остановки команды, доступ к внутреннему контейнеру с дашбордом будет остановлен, при этом сам контейнер будет работать.
Для того чтоб подключиться к дашборду извне вам нужно указать ip адрес вашего сервера, вместо 127.0.0.1(localhost) и изменить порт на 8001, например вот такой адрес должен получиться в адресной строке браузера:
1 |
http://192.168.2.137:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ |
Лучше всего учиться управлять k8s через cli, но для тех кто только начинает обучения k8s, в дашборде есть замечатиленые подсказки при совершении действий в уведомлениях показываются cli команды которыми можно сделать тоже самое действие из консоли.
Теперь когда у нас есть настроенный minikube
, можно продолжить дальнейшие изучени. Рекомендую сначало изучать офф. документацию — https://minikube.sigs.k8s.io/docs/ и если что то будет непонятно или не будет получаться, обращаться к сторонним статьям и видео.
Добавить комментарий