Kubespray – Установка кластера Kubernetes в любом облаке за 15 минут
Установить Kubernetes можно множеством различных способов. Какие-то из-них уже были описаны на этом сайте. В этой статье будет показан еще один способ выполнить установку примерно за 15 минут при помощи Kubespray.
Предварительные требования
- Один или несколько физических или виртуальных серверов, запущенных в любом облаке (AWS, GCP, Azure, OpenStack или, например, в K2 CLOUD).
- Установленный Python
- Установленный Git Все остальное мы сделаем вместе далее.
Подготовка к исталляции
Для того, чтобы развернуть кластер Kubernetes при помощи Kubespray, создайте отдельную рабочую директорию:
$ mkdir kubespray_demo
$ cd kubecspray_demo
Создайте внутри виртуальное окружение, установив в нем Ansible и netaddr:
$ virtualenv venv
$ source venv/bin/activate
$ pip install ansible
$ pip install netaddr
Далее склонируйте репозиторий kubespray:
$ git clone https://github.com/kubernetes-incubator/kubespray
Отредактируйте Ansible inventory файл согласно требованиям к вашему кластеру. В качестве примера можно использовать файл inventory/inventory.example.
$ cp inventory/inventory.example inventory/inventory.cfg
$ vim inventory/inventory.cfg
Для примера конфигурация из одного master сервера и двух вычислительных узлов будет выглядеть следующим образом:
master ansible_ssh_host=5.8.181.218 ip=192.168.1.4
node-1 ansible_ssh_host=5.8.181.35 ip=192.168.1.6
node-2 ansible_ssh_host=5.8.181.27 ip=192.168.1.5
[kube-master]
master
[etcd]
master
node-1
node-2
[kube-node]
node-1
node-2
[k8s-cluster:children]
kube-node
kube-master
Первые три строки описывают параметры подключения к серверам:
- Имя сервера – задает имя на уровне конфигурации, не переименовывает сервер
- ansible_ssh_host – внешний IP-адрес подключения к серверу
- ip – внутренний IP-адрес сервера (необходимо указывать, когда серверы запущены в облаке в сети с приватной адресацией)
Деплой Kubernetes кластера
Деплой Kubernetes кластера при помощи Kubespray выполняется простой командой:
$ ansible-playbook -u ec2-user -b -i inventory/inventory.cfg cluster.yml
Где
- u ec-user – имя пользователя для подключения к серверу по SSH
- b – сказать Ansible, чтобы он использовал утилиту sudo при выполнении команд на удаленном сервере
- i – указание расположения inventory файла
Процесс деплоя кластера Kubernetes в данной конфигурации займет примерно 15 минут.
Проверка работоспособности Kubernetes кластера
Для проверки работоспособности кластера Kubernetes, подключитесь к master-серверу и выполните следующие команды:
$ kubectl cluster-info
$ kubectl get nodes
$ kubectl get pods —all-namespaces
Вы должны увидеть статус кластера, все узлы и все запущенные pod-ы. Также для проверки работоспособности кластера можно запустить демо микросервисного приложения sock-shop:
$ kubectl create namespace sock-shop
$ kubectl apply -n sock-shop -f "https://raw.githubusercontent.com/microservices-demo/microservices-demo/master/deploy/kubernetes/com..."
Смотреть за запуском pod-ов удобно при помощи команды:
$ watch -n1 kubectl -n sock-shop get pods
Как только все pod-ы запустятся, можно попробовать подключиться к магазину при помощи Web-интерфейса. Данное приложение будет опубликовано на master сервере на порту, который выдаст команда (обычно 30001)
$ kubectl -n sock-shop get svc front-end
Для удаления демо-приложения необходимо всего лишь удалить его пространство имен. Все остальное Kubernetes сделает за вас
$ kubectl delete namespace sock-shop
Поздравляю, вы только что без особых временных затрат в полностью автоматическом режиме развернули собственный кластер Kubernetes и протестировали его работоспособность. Далее можно переходить к экспериментам или пытаться развернуть более сложную конфигурацию кластера (например, работающую в режиме отказоустойчивости мастеров). При наличии запросов, я обязательно сделаю на эту тему отдельную статью и видео-инструкцию.