Установка Kubernetes кластера за 15 минут при помощи Rancher 2.0
Содержание:
Как-то так получилось, что вчера я решил посмотреть, что там происходит с Rancher – еще одной очень интересной системе, упрощающей оркестрацию контейнеров.
Установка и первое впечатление
Я везде использую Ubuntu, поэтому вот список команд для Ubuntu 16.04, устанавливающих Docker без лишних вопросов:
#!/bin/bash
apt-get update
apt-get -y install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
apt-key fingerprint 0EBFCD88
add-apt-repository «deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable»
apt-get update
apt-get -y install docker-ce
usermod -G docker ec2-user
Для тех, кто использует хостинг с OpenStack или, например, K2 CLOUD, эти инструкции могут быть переданы виртуальной машине через пользовательские данные (user-data), чтобы установить Docker сразу в процессе загрузки. Как это сделать, показано в видео к этому посту.
Для установки Rancher не требуется ровным счетом ничего, кроме набора открытых портов и минимум 4-х Гб оперативной памяти для виртуальной машины. Сама же установка осуществляется командой:
sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/server:preview
Сразу после запуска контейнера на внешнем IP-адресе вашей виртуальной машины станет доступен Web-интерфейс управления Rancher. При первом входе надо будет задать пароль для учетной записи admin
:
Скажу сразу, что за последний год у Rancher произошло множество существенных изменений. Они сконцентрировались на Kubernetes, убрали все лишнее из Web-интерфейса, сделали его лаконичным и интуитивно понятным.
Приятно также то, что Kubernetes кластер устанавливается сам за считанные минуты и легко расширяется. Можно использовать любое Облако, хостинг или ставить его на голое железо.
Поддерживается очень много систем хранения данных для постоянных дисков (persistent volumes) Kubernetes.
Поддерживаются роли, что позволяет вам инсталлировать Kubernetes кластеры для себя и своих друзей просто пачками
В общем, если в течении прошлого года я еще советовал коллегам устанавливать Kubernetes самостоятельно, то теперь смело могу утверждать, что для облегчения собственной жизни можно использовать Rancher!
Установка кластера Kubernetes
Сразу после задания пароля вы попадаете в интерфейс, где вам сразу же предлагают создать ваш первый кластер. Ну что ж, согласимся! Жмем большую синюю кнопку Add cluster.
Все, что вам нужно сделать на следующем экране, это определиться с облачной платформой, в которой вы будете разворачивать Kubernetes кластер. Если вы не видите в опциях свою облачную платформу или хостинг, значит, смело выбирайте Custom
.
Если вы разворачиваете кластер впервые, все остальные опции можно оставить без изменения. На всякий случай скажу, что выбрать версию кластера Kubernetes и тип виртуализации сети можно в Cluster Options
.
Нажимаем Next
и попадаем в визард по добавлению хостов. Здесь можно в графическом Web-интерфейсе назначить хосту конкретную роль и получить Docker команду, которую надо будет выполнить на дополнительном хосте, чтобы добавить его в кластер.
Если ваши ресурсы ограничены или вы хотите просто посмотреть, как все это работает, можно поставить галочки на ролях etcd
, Control
и Worker
и выполнить полученную команду прямо на хосте, на котором вы запустили мастер-сервер Rancher-а.
Внимание: обратите внимание на Node Addresses
. Если ваш хост получает внешний IP-адрес при помощи NAT (как в AWS или GCP), необходимо явно указать его публичный и приватный IP.
Копируем Docker команду и выполняем ее на нужном нам хосте. А в визарде нажимаем на кнопку Done. Процесс инсталляции запущен.
Команду, которую вы выполнили на хосте можно выполнить на любом другом хоте, который вы хотите подключить к кластеру Kubernetes. С ролями, если нужна отказоустойчивость, определяйтесь сами.
В конце процесса инсталляции, который длится несколько минут, вы увидите статистику доступных в кластере ресурсов.
Тестирование кластера
Для запуска сервиса переходим в пространство или окружение (кому как нравится) Default.
Нажимаем кнопку Deploy
:
В поле Name
вводим, например, название сервиса, который мы запускаем. В качестве примера я запущу Nginx в стандартной конфигурации, поэтому в поле Name я укажу просто Test-Nginx
.
В поле Docker Image
указываем Docker образ, находящийся в публичном репозитории, который мы хотим запустить, в моем случае это просто nginx
.
Далее можно выбрать количество подов
для запуска, я оставлю 1
.
И конечно же, нужно сделать мапинг портов.
Нажмите Add Port
. И укажите 80
в Publish the container port
. Остальные значения оставьте по-умолчанию.
Нажмите кнопку Launch
.
Как только Nginx закончит публиковаться, вы увидите, что его статус изменится на Active. Получить доступ к сервису можно при помощи правого клика на опубликованный порт.
Давайте опубликуем наш Nginx наружу как нормальное Web-приложение. Для этого перейдем во вкладку Load Balancing
и добавим Ingress LoadBalancer.
В качестве имени
укажем my-nginx-website
, в качестве Path
укажем /
, в качестве Target
укажем наш test-nginx
, а в качестве порта
поставим 80
. Нажимаем Save
.
Через несколько секунд вы увидите, что ваш Nginx был опубликован за балансировщиком, стал доступен по FQDN в домене xip.io (т.е. на этот FQDN можно теперь назначить CNAME в своем домене и, например, хостить ваш сервис из-под вашего домена).