Kubernetes quick start или первый старт на bare metal (Установка на vps/vds)
Kubernetes набирает популярность уже не только больших компаний, но и средних.
Для первичного ознакомления рекомендуем доклад Дмитрия Столярова (компания Flant)“Наш опыт с Kubernetes в небольших проектах”
Мы после просмотра доклада поймали себя на мысли, что это про Нас и на 80-90процентов описывает нашу ситуацию. Пришло время как минимум познакомиться с инструментом. Kubernetes забирает на себя часть задач решаемых ранее такими инструментами как chef/puppet/ansible или capistrano. Кубернетес предоставляет новый уровень абстракции позволяющей унифицировать возможность запуска приложений без привязки к вендору облаков или на своих серверных мощностях. Вы можете использовать гибридные модели, когда ядро системы находится на своих мощностях, а облака подключаются в пики.
При использование kubernetes меняются подходы в работе над приложением, но об этом мы поговорим в другой раз. В этой заметке мы выполним ручную установку с использованием такого инструмента как kubeadm
Выполним инициализацию нашего кластера и мастер ноды
kubeadm init --pod-network-cidr=192.168.0.0/16
Параметр --pod-network-cidr=192.168.0.0/16 важен для обеспечения работы виртуальной локальной сети с плагином calico. Calico - первый plugin сети - что завелся без танцев с бубном. Вы можете выбрать любой из списка и внимательно изучить документацию
Calico
Canal
Flannel
Kube-router
Romana
Weave Net
После инициализации команда выдаст строку для подключения новых нод
Настроим доступ для пользователя root и авторизацию для kubectl. Не рекомендуются вести работу с кластером на уровне root. Мы сознательно отойдем от данной рекомендации, для упрощения запуска на первом этапе изучения.
После запуска команды в кластере начнется настройка компонентов сети. Проверить готовность кластера к работе можно командой
Признаком - что все прошло без сбоев является колонка READY где числа до и после слеша равны
Важно: - минимальные требования для запуска kubernetes + calico
2CPU
2GB RAM
10GB free disk space
RedHat Enterprise Linux 7.x+, CentOS 7.x+, Ubuntu 16.04+, or Debian 8.x+
Если все прошло без сбоев - то мы получили мастер ноду готовую к работе и присоединению рабочих нод.
Для возможности запуска приложений и контейнеров на master мы должны выполнить команду
kubectl get nodes
NAME STATUS ROLES AGE VERSION
171145.simplecloud.ru Ready master 8h v1.9.3
Запускать приложения и работать с кластером можно в такой минимальной установке.
Для полноты эксперимента мы созданим и подключим еще одну ноду(сервер) к кластеру и выполним свой первый deploy с помощью kubernetes.
Для настройки ноды мы повторяем все шаги до команды включительно
На мастре проверить корректность работы можно командой
kubectl get nodes
NAME STATUS ROLES AGE VERSION
171145.simplecloud.ru Ready master 9h v1.9.3
171249.simplecloud.ru NotReady 6s v1.9.3
Первый деплой в kuberneres
Запуск кластера - ради запуска кластера имеет мало пользы. Тк на данный момент мы только изучаем кубернетес и не имеем достаточно знаний для запуска своих проектов, мы запустим демку с магазином носков.
#создадим пространство имен sock-shop
kubectl create namespace sock-shop
# выполним деплой в namespace sock-shop
kubectl apply -n sock-shop -f "https://raw.githubusercontent.com/microservices-demo/microservices-demo/master/deploy/kubernetes/complete-demo.yaml"
Посмотреть состояние подов можно командой
kubectl get pods -n sock-shop
Как только все поды перейдут в состояние READY 1/1 - наш магазин успешно запущен в нашем облаке из облачных серверов.