Для управления и запуска контейнеров Docker используется кластер Kubernetes, поэтому начинающим специалистам нужно уметь выполнять его развёртывание. В данной статье мы рассмотрим этот процесс на серверах с поддержкой ОС Ubuntu.
Kubernetes — мощная и популярная платформа оркестровки контейнеров с открытым исходным кодом, ставшая неотъемлемым инструментом современной разработки программного обеспечения. Она позволяет пользователям легко развертывать, управлять и масштабировать приложения на кластере компьютеров.
Kubernetes состоит из нескольких нод (физических или виртуальных серверов), которые объединяются в единую систему управления. Каждая нода выполняет определенные функции, такие как хранение и запуск контейнеров.
Кластеры Kubernetes представляют собой самоуправляемые группы контейнеров, которые могут использоваться для надежного развертывания приложений в нескольких центрах обработки данных или облачных средах. Это набор физических или виртуальных компьютеров (узлов), на которых работает программное обеспечение Kubernetes.
Узлом может быть любой компьютер или сервер, на котором установлено программное обеспечение операционной системы Kubernetes. Для использования возможностей Kubernetes необходим как минимум один главный узел, который будет выступать в качестве точки управления и координировать работу всех компонентов кластера, а также один или несколько рабочих узлов, на которых будут запускаться контейнеры приложений. В зависимости от организационных потребностей и размера инфраструктуры могут потребоваться и другие компоненты, такие как прокси-серверы, узлы обслуживания хранилищ и т. д., но они не всегда необходимы для базового развертывания и масштабирования.
Основным преимуществом использования кластера Kubernetes является его способность обеспечить автоматизированное развертывание, управление и масштабирование контейнерных приложений на нескольких узлах при минимальных усилиях со стороны разработчиков и администраторов. Автоматизация этих процессов позволяет создать эластичную инфраструктуру, в которой разработчики могут сосредоточиться на кодировании, а не на ручном управлении серверами, что ускоряет развертывание и делает его гораздо более экономичным по сравнению с традиционными системами (которые предполагают ручное управление).
Кроме того, это позволяет быстро наращивать мощности в случае необходимости, не прибегая к покупке нового оборудования или серверов — вместо этого они используют то, что уже настроено автоматически в существующей инфраструктуре с помощью API-интерфейсов Kubernetes.
Преимущества использования кластера Kubernetes весьма значительны.
Все эти факторы делают ее идеальной для распределенных сред, где требуется быстрое выделение ресурсов в ответ на изменение рабочей нагрузки.
Развёртывание представляет собой процесс создания и настройки кластера, состоящего из нескольких узлов (нод), которые работают вместе для обеспечения надежности, масштабируемости и отказоустойчивости вашего приложения.
Рассмотрим основные способы.
Для развёртывания кластера на серверах с поддержкой ОС Ubuntu нужно выполнить несколько шагов. Ниже представлены команды и объяснение, что они делают.
Создаём ключ.
ssh-keygen
Указываем флаг -t, чтобы уточнить тип ключа. В нашем примере это RSA.
ssh-keygen -t rsa
Используем флаг -b для разрядности.
ssh-keygen -b 2048 -t rsa
Дополнительно нужно указать ключ к файлу с ключами, обычно он имеет такой вид:
/home/user_name/ .ssh/id_rsa.
После введения актуального пути нажмите Enter и введите пароль.
Программа автоматически создаст пару открытого и закрытого ключа. Открытый будет иметь аналогичное название с закрытым с добавлением в конце .pub.
Устанавливаем соединение с с worker node для обновления.
apt-get update
Ставим пакеты. В данном случае -y задаёт автоматические ответы «да» на системные запросы.
sudo apt-get install apt-transport-https ca-certificates curl -y
sudo mkdir \
-p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo gpg – dearmor -o /etc/apt/keyrings/docker.gpg
Вводим команду, где your_URL' – это адрес нужного репозитория.
sudo add-apt-repository 'deb [arch=amd64] your_URL'
Обновляем пакеты.
sudo apt update
Набираем инструкцию.
sudo apt install docker-ce -y
Делаем проверку.
sudo docker run hello-world
Рассмотрим 3 модуля Kube, которые нам понадобятся.
В команде все их нужно указать без запятых.
apt-get install -y kubelet kubeadm kubectl
Перезагружаем.
rm /etc/containerd/config.toml
systemctl restart containerd
Открываем раздел резервных копий, создаём точку восстановления.
Преобразуем одну из worker node в master node.
kubeadm init --pod-network-cidr=10.244.0.0/16
Система выдаст сообщение о выполнении действия.
Смотрим на последнюю строчку и сохраняем код токена.
export KUBECONFIG=$HOME/admin.conf
Разрешаем запуск контейнеров.
kubectl taint nodes --all node-role.kubernetes.io/master-
Ставим SDN Flannel и тестируем.
kubectl -n kube-system get pods
Если потеряли его, введите команду.
kubeadm token list
Приступаем к развертыванию кластера, это нужно успеть сделать за 24 часа, пока действует токен.
kubeadm token create --print-join-command
Укажите актуальный IP, а в конце добавьте токен.
kubeadm join 172.31.43.204:6443 --token fg691w.pu5qexz1n654vznt
--discovery-token-ca-cert-hash
kubectl get pods --all-namespaces
kubectl get nodes
В ответ система должна выдать значения Running и Ready.
Для развёртывания Kubernetes-кластера можно использовать также vCloud Director — инфраструктурный сервис, предоставляемый VMware, который позволяет автоматически управлять виртуальными машинами и ресурсами.
С помощью vCloud Director можно создать несколько виртуальных машин для каждой ноды кластера и настроить необходимые параметры, такие как количество ресурсов и сетевые настройки. Затем можно развернуть Kubernetes на каждой виртуальной машине с использованием инструкций, предоставляемых официальным сайтом Kubernetes.
Создаём кластер Azure CLI или PowerShell, выставив подходящие параметры во второй, третьей и последней строчках.
az aks create \
--resource-group myResourceGroup_name_here \
--name myAKSCluster_name_here \
--node-count 2 \
--generate-ssh-keys \
--attach-acr <acrName_here>
Если не хотите самостоятельно заниматься развёртыванием кластера, можно приобрести готовое решение с подходящей конфигурацией. Вам останется только изменить параметры под собственные цели.
Здесь можно выбрать Сервер с поддержкой ОС Ubuntu
Развёртывание Kubernetes-кластера — это сложный процесс, который требует знаний и опыта в области DevOps. В данной статье мы рассмотрели несколько способов развертывания кластера на серверах с поддержкой ОС Ubuntu.
Независимо от выбранного способа, развёртывание кластера Kubernetes позволяет создать мощную платформу для управления контейнеризированными приложениями и обеспечить их горизонтальное масштабирование и отказоустойчивость.