• Skip to primary navigation
  • Skip to content
  • Skip to primary sidebar

Dev-Ops-Notes.RU

Python, Docker, Kubernetes, Jenkins, GCP и AWS

  • Учебник Kubernetes
  • Учебник Docker
  • Скидка на курсы Udemy
  • Релокация в США
  • Для авторов

Kubespray – Установка кластера Kubernetes в любом облаке за 15 минут

Установить Kubernetes можно множеством различных способов. Какие-то из-них уже были описаны на этом сайте. В этой статье будет показан еще один способ выполнить установку кластера Kubernetes в автоматическом режиме примерно за 15 минут при помощи Kubespray.

Видео-инструкция

Предварительные требования

  • Один или несколько физических или виртуальных серверов, запущенных в любом облаке (AWS, GCP, Azure, OpenStack или, например, в Облаке КРОК).
  • Установленный 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-адрес сервера (необходимо указывать, когда серверы запущены в облаке в сети с приватной адресацией)

После того, как определен inventory файл, можно переходить к деплою кластера.

Деплой 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/complete-demo.yaml"

Смотреть за запуском 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 и протестировали его работоспособность. Далее можно переходить к экспериментам или пытаться развернуть более сложную конфигурацию кластера (например, работающую в режиме отказоустойчивости мастеров). При наличии запросов, я обязательно сделаю на эту тему отдельную статью и видео-инструкцию.

Related

Primary Sidebar

Найти статью

Лучшее DevOps обучение

Новые статьи

Основные команды Docker

Шпаргалка по командам Docker

Об авторе

Expert in virtualization and cloud computing
Facebook | LinkedIn | Twitter | GitHub

Мы в соц сетях

Tags

angular ansible aws azure backup big data bigdata bot cdn chef comandwire continuous integration coreos croc dcos deep learning development devops digitalocean dns docker ecs etcd flask github google cloud javascript jenkins kubernetes linux machine learning networks nginx packer php python security serverless storage tensorflow terraform windows server wordpress крок релокация в США

sponsored