Kubernetes Ia: Настройка локального кластера Minikube/Docker, кластера Google Kubernetes Engine

July 24, 2018
cloud kubernetes kubectl cluster minikube GKE docker
Share on:

Моя книга “Программирование Cloud Native. Микросервисы, Docker и Kubernetes” подробно описывает весь процесс разработки с участием Kubernetes. По ссылке ее можно скачать бесплатно. Книга обновляется и поддерживается активнее, чем эта статья. Данная статья не обновляется, однако сведения в основном верны.

Настройка кластера Kubernetes для локальной разработки или работы в облаке

Основной инструмент - командная строка kubectl

Любая работа с кластером Kubernetes, если конечно вы не собираетесь использовать web-интерфейс предоставляемый некоторыми облаками, требует инструмента kubectl, который простыми командами обращается к API Kubernetes, и дает нам возможность получить весь возможный обьем информации о кластере, узлах, отсеках и развертываниях.

Установить kubectl на своем собственном компьютере просто, зайдите за инструкциями по установке на официальный сайт Kubernetes - особенно удобно пользоваться простым вызовом curl - kubectl это один бинарный файл, и вы точно увидите, какую версию и откуда вы получили - kubernetes.io: установка через curl.

Если вы предпочитаете работать с одним из основных облаков, таких как Google Cloud, то их инструменты, такие как Google Cloud SDK, как правило уже содержат настроенную и готовую к работе версию kubectl, и отдельная установка вам не потребуется.

Локальная разработка - Minikube

При начале работы с кластерами Kubernetes самый распространенный вариант - попробовать установить локальный эмулятор Kubernetes под названием minikube на свой собственный сервер или рабочую машину. Для этого пригодится открытый проект на Github kubernetes/minikube.

Сделать это проще всего с помощью команды curl. Она всегда доступна на Linux и Mac. На Windows бинарный файл можно просто скачать - все последние выпуски minikube выкладываются на соответствующую страницу Github.

Для curl выглядеть это будет примерно так (не могу обещать точные адреса URL - вы всегда можете проверить их на странице minikube на Github):

minikube запустит для вас минимальную виртуальную машину Linux с поддержкой контейнеров, для этого используется драйвер виртуализации, его нужно будет установить заранее -

Далее, вызовите команду minikube start --vm-driver XXX - она скачает и запустит для вас минимальную виртуальную машину Linux с поддержкой контейнеров (XXX - это используемый драйвер виртуализации, например hyperkit для Mac или hyperv для Windows), после чего установит на эту машину все необходимые компоненты Kubernetes - управляющий узел, сервер API, создаст узел (по умолчанию один), и ваш локальный кластер, не требующий больше настроек, доступа в Интернет и дополнительной авторизации, будет готов к работе.

Выглядеть это будет примерно так:

$ minikube start
Starting local Kubernetes v1.10.0 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
Kubectl is now configured to use the cluster.
Loading cached images from config file.

Команда status позволяет узнать текущее состояние и сетевой адрес кластера:

$ minikube status
minikube: Running
cluster: Running
kubectl: Correctly Configured: pointing to minikube-vm at 192.168.64.3

Остановить локальный кластер и виртуальную машину можно командой stop, а полностью удалить (включая все настройки и существующие сервисы и развертывания) - командой delete.

Minikube также включает в себя визуальную консоль со всеми текущими развертываниями и настройками Kubernetes - очень удобно если надоедает постоянно искать информацию в консоли - просто наберите minikube dashboard и она откроется в вашем браузере:

Локальная разработка - Docker (на данный момент только Mac и Windows)

Последние версии Docker для Mac и Windows поддерживают настройку и запуск локального кластера Kubernetes. В самом деле, на этих операционных системах контейнеры все равно должны работать в окружении Linux, и для этого Docker создает и запускает минимальную виртуальную машину Linux. Идея проста - использовать ее и в качестве основного узла кластера Kubernetes.

Включить локальный кластер очень просто (снимок экрана с Mac) - откройте настройки, найдите вкладку Kubernetes и включите его одним щелчком мыши:

Проверьте затем что кластер Docker выбран для работы с командами kubectl и активен:

$ kubectl config current-context
docker-for-desktop
$ kubectl cluster-info
Kubernetes master is running at https://localhost:6443
KubeDNS is running at https://localhost:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
$ kubectl get nodes
NAME                 STATUS    ROLES     AGE       VERSION
docker-for-desktop   Ready     master    10m       v1.10.3

Здесь все похоже на minikube, но естественно другое название для контекста kubectl и как видно, Docker использует адрес localhost вместо виртуального сетевого адреса, но суть примерно такая же, и по умолчанию под управлением Kubernetes в кластере имеется только один узел.

Работа с Kubernetes в Google Cloud: Google Kubernetes Engine (GKE)

Стоит помнить, что у minikube есть значительные отличия от облачных решений, таких как GKE или Amazon EKS, и это будет эмулятор Kubernetes, в то время как в настоящем облаке вы будете работать непосредственно на распределенном кластере в удаленном вычислительном центре, и именно в таком случае простота и мощь Kubernetes особенно впечатляет. Учитывая что многие кластеры можно опробовать бесплатно, имеет смысл опробовать свои решения и на облачных кластерах.

Для первого примеров работы в “настоящем”, открытом облаке идеально воспользоваться реализацией Kubernetes в облаке Google Cloud, по нескольким причинам - сама эта технология впервые была предложена Google, в этом облаке существует очень легкая в использовании система GKE (Google Kubernetes engine), и на все облачные услуги существует очень щедрый бесплатный период использования.

Посмотреть детали регистрации в облаке Google Cloud вы можете на сайте Google Cloud, как правило для начала работы достаточно иметь любой аккаунт почты Gmail. Сразу же будет предложено воспользоваться кредитом, которым можно распорядиться полностью по своему усмотрению - все сервисы будут работать как и в реальной жизни, без демонстрационных урезанных вариантов:

После того, как ваш аккаунт будет активен, создайте облачный проект для тестов и экспериментов. Облачный проект - это набор всех вычислительных услуг и серверов, которые вы собираетесь использовать в единых целях. Обычно для тестирования и разработки используют один проект, для полностью готового приложения, доступного пользователям - другой, для экспериментов - третий.

Затем перейдите в раздел Kubernetes Engine, подождите его активации и создайте простейший кластер с настройками по умолчанию.

В целях экономии рекомендую вам выбрать самый простой тип узлов для кластера - так называемые микро-машины с минимумом вычислительной мощи и памяти - больше нам для тестирования и примеров не понадобится, а бесплатного испытательного режима хватит намного дольше. Давайте для начала назовем первый кластер hello-cluster.

Без сомнения самый простой способ запускать команду kubectl в облаке Google Cloud - использовать виртуальный терминал Google Cloud Shell - это терминал подключенный к одной из виртуальных машин, заранее авторизованный для вашего аккаунта и проекта в облаке. Он работает прямо из Web-интерфейса управления ресурсами Google Cloud. Все инструменты Kubernetes уже заранее там установлены и доступны - именно этот способ можно рекомендовать для самого быстрого начала работы, а потом уже перейти к установке kubectl на вашем собственном компьютере.

Прежде чем команда kubectl узнает, с каким кластером Google Cloud ей нужно работать, где находится управляющий узел и способ авторизации, необходимо настроить ее с помощью вызова gcloud из пакета инструментов Google Cloud SDK:

gcloud container clusters get-credentials hello-cluster --zone [географическая зона кластера] --project [название вашего проекта Google Cloud]

Географическую зону, в которой размещен кластер вы сможете указать при создании кластера, и таким образом она будет вам всегда известна. Более того, вам предложат скопировать строчку для настойки вашего кластера Kubernetes в буфер обмена, так что можно будет вставить ее в свою консоль. Проект всегда будет также легко доступен в управляющей консоли Google Cloud.

После этого кластер запущен, в основном окне консоли Google Cloud вы сможете увидеть, сколько именно будут стоить вычислительные ресурсы вашего кластера, и инструменты Kubernetes kubectl и Google Cloud SDK готовы к работе и управлению новым кластером.

comments powered by Disqus