Установка Minikube

Mar 26, 2018 08:15 · 444 words · 3 minute read kubernetes minikube

Minikube - утилита командной строки для настройки и запуска однонодового кластера Kubernetes в виртуальной машине на локальном компьютере.

Данный вариант просто идеально подходит для первого знакомства с кластером под управлением Kubernetes и выполнения несложных лабораторных работ.

Прежде чем приступить к установке Minikube, нужно убедиться, что в системе поддерживается виртуализация VT-x/AMD-v. В Linux сделать это можно так (результат выполнения команды не должен быть пустым):

cat /proc/cpuinfo | grep 'vmx\|svm'

Для Mac OS X можно воспользоваться такой командой:

sysctl -a | grep machdep.cpu.features | grep VMX

Примечание. Если вы используете Docker for Mac версии 17.12 и новее, достаточно просто переключиться на Edge channel (нестабильная, экспериментальная ветка) и вы уже получите Kubernetes (подробности).

Нам понадобятся следующие компоненты:

  • VirtualBox
  • minikube
  • kubectl

С VirtualBox не должно возникнуть никаких вопросов - на официальном сайте скачиваем установщик и следуем указаниям мастера установки.

Для установки Minikube достаточно перейти на страницу с последним релизом (на момент написания статьи v0.25.0) и выполнить предложенные инструкции. Например, для Linux:

curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.25.0/minikube-linux-amd64 \
    && chmod +x minikube \
    && sudo mv minikube /usr/local/bin/

или для Mac OS X:

curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.25.0/minikube-darwin-amd64 \
    && chmod +x minikube \
    && sudo mv minikube /usr/local/bin/

Далее переходим к установке kubectl - утилиты командной строки для управления приложениями, развернутыми в кластере. Здесь может быть несколько вариантов, например, установка с помощью curl:

  • Linux
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl \
    && chmod +x ./kubectl \
    && sudo mv ./kubectl /usr/local/bin/kubectl
  • Mac OS X:
curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/darwin/amd64/kubectl \
    && chmod +x ./kubectl \
    && sudo mv ./kubectl /usr/local/bin/kubectl

Второй вариант - установка kubectl как часть Google Cloud SDK (считаем, что SDK уже установлен):

gcloud components install kubectl

Также можно установить kubectl используя специфический менеджер пакетов, для Linux:

sudo snap install kubectl --classic

Mac OS X:

brew install kubectl

Чтобы проверить корректность установки kubectl, не забудьте запустить команду:

kubectl version

Теперь можем приступать к работе с minikube:

minikube start
Starting local Kubernetes cluster...
Running pre-create checks...
Creating machine...
Starting local Kubernetes cluster...

Запуск пода из docker-образа hello-minikube, предназначенного для демонстрации:

kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.4 --port=8080
deployment "hello-minikube" created

Смотрим запущенные поды в кластере (под запускается):

kubectl get pod
NAME                              READY     STATUS              RESTARTS   AGE
hello-minikube-3383150820-vctvh   0/1       ContainerCreating   0          3s

Проверяем еще раз через несколько секунд:

kubectl get pod
NAME                              READY     STATUS    RESTARTS   AGE
hello-minikube-3383150820-vctvh   1/1       Running   0          13s

Для организация доступа к поду hello-minikube извне запустим команду:

kubectl expose deployment hello-minikube --type=NodePort
service "hello-minikube" exposed

Проверим работу пода с помощью утилиты curl из командной строки:

curl $(minikube service hello-minikube --url)
CLIENT VALUES:
client_address=192.168.99.1
command=GET
real path=/
...

Убираем за собой - удаляем deployment и останавливаем minikube:

kubectl delete deployment hello-minikube
deployment "hello-minikube" deleted
minikube stop
Stopping local Kubernetes cluster...
Stopping "minikube"...
tweet Share