Как настроить Kubernetes кластер на Vagrant VM

в 13:29, , рубрики: devops, kubeadm, kubernetes, vagrant

В этом учебном пособии Kubernetes я рассмотрел пошаговое руководство по настройке Kubernetes кластера на Vagrant. Это многонодовая настройка Kubernetes с использованием kubeadm.

Vagrant - это отличная утилита для настройки виртуальных машин на вашей локальной рабочей станции.

Это руководство в первую очередь посвящено автоматизированной настройке Kubernetes с использованием скриптов Vagrantfile и  shell scripts. 

Автоматическая настройка Kubernetes кластера на Vagrant

Я написал базовый Vagrantfile и скрипты, чтобы каждый мог понять и внести изменения в соответствии со своими требованиями.

Сводка настройки.

  1. Команда vagrant up создаст три виртуальные машины и настроит все основные компоненты и конфигурацию kubernetes с помощью Kubeadm.

  2. Файл kubeconfig добавляется ко всем узлам кластера, чтобы вы могли выполнять команды kubectl с любого узла.

  3. Файл kubeconfig и токен доступа к kubernetes добавляются в папку configs, где у вас есть Vagrantfile. Вы можете использовать файл kubeconfig для подключения кластера с вашей рабочей станции.

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

  5. Вы можете удалить все виртуальные машины одной командой vagrant destroy и воссоздать установку с помощью команды vagrant up в любое время.

Kubernetes, Kubeadm, Vagrant, Github Repository

Kubeadm, Vagrantfile и скрипты расположены в репозитории Github.

Клонируйте репозиторий.

git clone https://github.com/scriptcamp/vagrant-kubeadm-kubernetes

Настройка Kubernetes кластера на Vagrant

Выполните приведенные ниже действия, чтобы развернуть кластер Kubernetes и проверить все конфигурации кластера.

Шаг 1: Чтобы создать кластер, перейдите в клонированный каталог.

cd vagrant-kubeadm-kubernetes

Шаг 2: Выполните vagrant команду. Она развернет три узла. Один master и две worker-node. Установка и настройка Kubernetes происходит через bash script, присутствующий в папке scripts.

vagrant up

Примечание: Если вы запускаете его в первый раз, Vagrant сначала загрузит образ ubuntu, упомянутый в Vagrantfile. Это одноразовая загрузка.

Шаг 3: Войдите в master-node, чтобы проверить конфигурацию кластера.

vagrant ssh master

Шаг 4: Вывод списка всех нод кластера, чтобы убедиться, что worker-node подключены к master и находятся в готовом состоянии.

kubectl top nodes

Вы должны увидеть то, что показано ниже.

Как настроить Kubernetes кластер на Vagrant VM - 1

Вот и все! Вы можете начать развертывание и тестирование других приложений.

Чтобы завершить работу виртуальных машин Kubernetes, выполните команду:

vagrant halt

Когда вам снова понадобится кластер, просто выполните:

vagrant up

Чтобы удалить виртуальные машины:

vagrant destroy -f

Объяснение Kubeadm, Vagrantfile и Scripts

Дерево файлов vagrant репозитория.

├── Vagrantfile
├── configs
│   ├── config
│   ├── join.sh
│   └── token
└── scripts
├── common.sh
├── master.sh
└── node.sh

Папка configs и файлы генерируются только после первого запуска.

Как я объяснял ранее, папка config содержит файл config, token и файл join.sh.

В предыдущем разделе я уже объяснил, что такое config и token. Файл join.sh содержит команду присоединения worker-node с токеном, созданным во время инициализации master-node kubeadm.

Поскольку все ноды имеют общую папку с Vagrantfile, worker-node могут прочитать файл join.sh и автоматически присоединиться к master во время первого запуска. Это одноразовая задача.

Если вы войдете в какую-либо ноду и получите доступ к папке /vagrant, вы увидите Vagrantfile и скрипты в том виде, в каком они являются общими для виртуальных машин.

Давайте посмотрим на Vagrantfile

Vagrant.configure("2") do |config|
config.vm.provision "shell", inline: <<-SHELL
apt-get update -y
echo "10.0.0.10  master-node" >> /etc/hosts
echo "10.0.0.11  worker-node01" >> /etc/hosts
echo "10.0.0.12  worker-node02" >> /etc/hosts
SHELL
config.vm.define "master" do |master|
  master.vm.box = "generic/ubuntu2004"
  master.vm.hostname = "master-node"
  master.vm.network "private_network", ip: "10.0.0.10"
  master.vm.provider "virtualbox" do |vb|
      vb.memory = 4048
      vb.cpus = 2
  end
  master.vm.provision "shell", path: "scripts/common.sh"
  master.vm.provision "shell", path: "scripts/master.sh"
end
(1..2).each do |i|
config.vm.define "node0#{i}" do |node|
node.vm.box = "generic/ubuntu2004"
node.vm.hostname = "worker-node0#{i}"
node.vm.network "private_network", ip: "10.0.0.1#{i}"
node.vm.provider "virtualbox" do |vb|
vb.memory = 2048
vb.cpus = 1
end
node.vm.provision "shell", path: "scripts/common.sh"
node.vm.provision "shell", path: "scripts/node.sh"
end
end
end

Как видите, я добавил следующие IP-адреса для узлов, и он добавляется в запись файла хоста всех узлов с его именем хоста с общим блоком оболочки, который выполняется на всех виртуальных машинах.

  1. 10.0.0.10 (master)

  2. 10.0.0.11 (node 01)

  3. 10.0.0.12 (node 02)

Кроме того, блок worker-node находится в цикле. Поэтому, если вам нужно более двух worker-node или у вас только одина worker-node, вам нужно заменить 2 на нужное число в цикле. Если вы добавляете больше узлов, убедитесь, что вы добавили IP в запись файла node.

Например, для 3 worker-node необходимо иметь цикл 1..4.

(1..4).each do |i|
master.sh, node.sh и common.sh

Эти три скрипта запускаются в качестве provisioners во время запуска Vagrant для конфигурирования кластера.

  1. common.sh: - Список команд, устанавливающих docker, kubeadm, kubectl и kubelet на все узлы. Кроме того, отключает swap.

  2. master.sh: - содержит команды для инициализации master, установки плагина calico. Кроме того, копирует файлы kube-config, join.sh и token в каталог configs.

  3. node.sh:- читает команду join.sh из общей папки configs и присоединяется к master-node. Кроме того, скопировал файл kubeconfig в местоположение /home/vagrant/.kube для выполнения команд kubectl.

Вывод

Чтобы настроить кластер kubernetes на Vagrant, все, что вам нужно сделать, это клонировать репозиторий и запустить команду vagrant up.

Кроме того, вы инженер DevOps и работаете в кластере Kubernetes, вы можете иметь локальный стенд для разработки и тестирования.

Автор:
KostanPROFF

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js