В этом учебном пособии Kubernetes я рассмотрел пошаговое руководство по настройке Kubernetes кластера на Vagrant. Это многонодовая настройка Kubernetes с использованием kubeadm.
Vagrant - это отличная утилита для настройки виртуальных машин на вашей локальной рабочей станции.
Это руководство в первую очередь посвящено автоматизированной настройке Kubernetes с использованием скриптов Vagrantfile и shell scripts.
Автоматическая настройка Kubernetes кластера на Vagrant
Я написал базовый Vagrantfile и скрипты, чтобы каждый мог понять и внести изменения в соответствии со своими требованиями.
Сводка настройки.
Команда
vagrant up
создаст три виртуальные машины и настроит все основные компоненты и конфигурацию kubernetes с помощью Kubeadm.Файл kubeconfig добавляется ко всем узлам кластера, чтобы вы могли выполнять команды kubectl с любого узла.
Файл kubeconfig и токен доступа к kubernetes добавляются в папку configs, где у вас есть Vagrantfile. Вы можете использовать файл kubeconfig для подключения кластера с вашей рабочей станции.
Вы можете выключить виртуальные машины, когда они не используются, и запускать их снова, когда это необходимо. Все конфигурации кластера остаются нетронутыми без каких-либо проблем. Узлы автоматически подключаются к мастеру во время запуска.
Вы можете удалить все виртуальные машины одной командой
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 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-адреса для узлов, и он добавляется в запись файла хоста всех узлов с его именем хоста с общим блоком оболочки, который выполняется на всех виртуальных машинах.
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|
master.sh, node.sh и common.sh
Эти три скрипта запускаются в качестве provisioners
во время запуска Vagrant для конфигурирования кластера.
common.sh: - Список команд, устанавливающих docker, kubeadm, kubectl и kubelet на все узлы. Кроме того, отключает swap.
master.sh: - содержит команды для инициализации master, установки плагина calico. Кроме того, копирует файлы kube-config, join.sh и token в каталог configs.
node.sh:- читает команду join.sh из общей папки configs и присоединяется к master-node. Кроме того, скопировал файл kubeconfig в местоположение /home/vagrant/.kube для выполнения команд kubectl.
Вывод
Чтобы настроить кластер kubernetes на Vagrant, все, что вам нужно сделать, это клонировать репозиторий и запустить команду vagrant up.
Кроме того, вы инженер DevOps и работаете в кластере Kubernetes, вы можете иметь локальный стенд для разработки и тестирования.