- PVSM.RU - https://www.pvsm.ru -
В этом учебном пособии Kubernetes я рассмотрел пошаговое руководство по настройке Kubernetes кластера на Vagrant. Это многонодовая настройка Kubernetes с использованием kubeadm [1].
Vagrant - это отличная утилита для настройки виртуальных машин на вашей локальной рабочей станции.
Это руководство в первую очередь посвящено автоматизированной настройке Kubernetes с использованием скриптов Vagrantfile и shell scripts.
Я написал базовый Vagrantfile и скрипты, чтобы каждый мог понять и внести изменения в соответствии со своими требованиями.
Сводка настройки.
Команда vagrant up
создаст три виртуальные машины и настроит все основные компоненты и конфигурацию kubernetes с помощью Kubeadm.
Файл kubeconfig добавляется ко всем узлам кластера, чтобы вы могли выполнять команды kubectl с любого узла.
Файл kubeconfig и токен доступа к kubernetes добавляются в папку configs, где у вас есть Vagrantfile. Вы можете использовать файл kubeconfig для подключения кластера с вашей рабочей станции.
Вы можете выключить виртуальные машины, когда они не используются, и запускать их снова, когда это необходимо. Все конфигурации кластера остаются нетронутыми без каких-либо проблем. Узлы автоматически подключаются к мастеру во время запуска.
Вы можете удалить все виртуальные машины одной командой vagrant destroy
и воссоздать установку с помощью команды vagrant up
в любое время.
Kubeadm, Vagrantfile и скрипты расположены в репозитории Github [2].
Клонируйте репозиторий.
git clone https://github.com/scriptcamp/vagrant-kubeadm-kubernetes
Выполните приведенные ниже действия, чтобы развернуть кластер 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 halt
Когда вам снова понадобится кластер, просто выполните:
vagrant up
Чтобы удалить виртуальные машины:
vagrant destroy -f
Дерево файлов 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-адреса для узлов, и он добавляется в запись файла хоста всех узлов с его именем хоста с общим блоком оболочки, который выполняется на всех виртуальных машинах.
10.0.0.10 (master)
10.0.0.11 (node 01)
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|
Эти три скрипта запускаются в качестве provisioners
во время запуска Vagrant для конфигурирования кластера.
common.sh [3]: - Список команд, устанавливающих docker, kubeadm, kubectl и kubelet на все узлы. Кроме того, отключает swap.
master.sh [4]: - содержит команды для инициализации master, установки плагина calico. Кроме того, копирует файлы kube-config, join.sh [5] и token в каталог configs.
node.sh [6]:- читает команду join.sh [5] из общей папки configs и присоединяется к master-node. Кроме того, скопировал файл kubeconfig в местоположение /home/vagrant/.kube для выполнения команд kubectl.
Чтобы настроить кластер kubernetes на Vagrant, все, что вам нужно сделать, это клонировать репозиторий и запустить команду vagrant up.
Кроме того, вы инженер DevOps и работаете в кластере Kubernetes, вы можете иметь локальный стенд для разработки и тестирования.
Автор:
KostanPROFF
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/vagrant/370956
Ссылки в тексте:
[1] kubeadm: https://github.com/kubernetes/kubeadm
[2] репозитории Github: https://github.com/scriptcamp/vagrant-kubeadm-kubernetes
[3] common.sh: http://common.sh
[4] master.sh: http://master.sh
[5] join.sh: http://join.sh
[6] node.sh: http://node.sh
[7] Источник: https://habr.com/ru/post/599039/?utm_source=habrahabr&utm_medium=rss&utm_campaign=599039
Нажмите здесь для печати.