Блог компании 3v-Hosting
Как создать Kubernetes кластер из трех VPS серверов
10 мин.
Если вы хотите получить практический опыт работы с оркестрацией контейнеров, создание Kubernetes кластера из трех виртуальных частных серверов (VPS) - отличный способ для этого. Kubernetes - это мощная система с открытым исходным кодом для автоматизации развертывания, масштабирования и управления контейнерными приложениями. Она широко используется в производственных средах. В этой статье вы узнаете, как шаг за шагом создать Kubernetes кластер с помощью трех VPS серверов.
Что такое Kubernetes?
Kubernetes, часто называемый K8s, - это платформа для оркестрации контейнеров, которая автоматизирует развертывание, масштабирование и управление приложениями. Она упрощает управление контейнерными приложениями на нескольких машинах. Независимо от того, работаете ли вы с микрослужбами или монолитными приложениями, Kubernetes берет на себя большую часть сложностей управления контейнерными средами.
Основные компоненты Kubernetes включаю
Nodes (Узлы): машины (физические или виртуальные), на которых выполняются рабочие нагрузки Kubernetes.
Pods: самые маленькие развертываемые единицы, содержащие один или несколько контейнеров.
Control Plane: мозг кластера, который принимает глобальные решения о кластере (например, планирование, мониторинг).
В этом руководстве мы создадим Kubernetes кластер с тремя серверами VPS. Эти VPS серверы будут выполнять разные роли: один - в качестве главного узла (мастера), а два других - в качестве рабочих узлов (воркеры).
Необходимые условия
Перед началом работы убедитесь, что у вас есть следующее:
- Три экземпляра VPS с Ubuntu 20.04 или 22.04 (или другой совместимой дистрибутивом Linux).
- Не менее 2 ГБ ОЗУ и 2 процессора на каждый VPS.
- Доступ по SSH к каждому VPS.
- Базовые знания команд Linux и сетей.
Вам также необходимо установить Kubeadm, Kubelet и Kubectl на каждом из VPS серверов. Kubeadm - это инструмент, используемый для инициализации Kubernetes кластера, а Kubelet запускается на каждом узле, чтобы обеспечить работу контейнеров в подсистемах. Kubectl - это интерфейс командной строки для взаимодействия с кластером Kubernetes.
Шаг 1: Подготовка серверов
Обновление и модернизация серверов
На каждом VPS обновите список пакетов и обновите установленные пакеты.
sudo apt update && sudo apt upgrade -y
Установка Docker
Kubernetes использует среду выполнения контейнеров, и Docker является наиболее широко используемым вариантом.
Чтобы установить Docker:
sudo apt install -y docker.io
Запустите и включите Docker для запуска при загрузке:
sudo systemctl enable docker
sudo systemctl start docker
Добавьте своего пользователя в группу Docker, чтобы не использовать sudo для команд Docker:
sudo usermod -aG docker $USER
Отключите своп
Для правильной работы Kubernetes необходимо отключить своп. Выполните следующие команды, чтобы отключить своп на каждом сервере:
sudo swapoff -a
sudo sed -i „/ swap / s/^/#/“ /etc/fstab
Настройте сеть
Kubernetes использует определенные порты для связи между узлами. Убедитесь, что следующие порты открыты в брандмауэре:
- 6443: сервер API (мастер)
- 10250: API Kubelet
- 10251: планировщик
- 10252: диспетчер контроллеров
- 2379-2380: сервер Etcd
- 30000-32767: службы NodePort (для открытия доступа к приложениям)
Если для управления брандмауэром используется UFW, выполните:
sudo ufw allow 6443,10250,10251,10252,2379:2380,30000:32767/tcp
Другие статьи по администрированию в нашем Блоге:
- Шпаргалка по Docker: Основные команды для начала работы
- Основы Docker-Compose
- Cron - Планируй задачи на Linux-серверах правильно
- 10 полезных консольных утилит для мониторинга Linux-сервера
Шаг 2: Установите компоненты Kubernetes
Установите Kubeadm, Kubelet и Kubectl
На каждом VPS установите инструменты Kubernetes.
Сначала добавьте репозиторий Kubernetes:
sudo apt update && sudo apt install -y apt-transport-https
sudo curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-add-repository «deb https://apt.kubernetes.io/ kubernetes-xenial main»
Затем установите компоненты:
sudo apt update
sudo apt install -y kubeadm kubelet kubectl
Включите и запустите Kubelet:
sudo systemctl enable kubelet
sudo systemctl start kubelet
Шаг 3: Инициализация мастер-узла
На VPS, который будет служить мастер-узлом, инициализируйте Kubernetes кластер с помощью kubeadm. Эта команда настроит плоскость управления и сгенерирует токен для рабочих узлов, чтобы они могли присоединиться к кластеру.
Запустите следующее на мастер-узле:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
Это запустит кластер и предоставит команду с токеном, который рабочие узлы будут использовать для присоединения к кластеру. Вывод будет выглядеть примерно так:
kubeadm join 192.168.1.100:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
Шаг 4: Настройка доступа Kubectl
После инициализации кластера необходимо настроить kubectl для взаимодействия с кластером с мастер-узла.
Создайте файл конфигурации Kubernetes для пользователя root:
sudo mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Проверьте конфигурацию, выполнив:
kubectl get nodes
На этом этапе вы должны увидеть мастер-узел в состоянии NotReady, поскольку рабочие узлы еще не добавлены.
Шаг 5. Настройка сетевого плагина
Kubernetes требует сетевой плагин для управления сетью подсистем. Flannel - простой и популярный вариант для этой цели.
На главном узле установите Flannel:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Подождите несколько минут, пока завершится настройка сети. Вы можете проверить статус, выполнив:
kubectl get pods --all-namespaces
Шаг 6: Присоединение рабочих узлов к кластеру
На каждом из двух рабочих узлов используйте предоставленный ранее токен для присоединения к кластеру. Выполните следующую команду (заменив на фактический токен и хеш):
sudo kubeadm join 192.168.1.100:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
После успешного присоединения проверьте статус на главном узле:
kubectl get nodes
Теперь вы должны увидеть рабочие узлы в списке Ready.
Шаг 7. Проверка кластера
Выполните следующую команду, чтобы проверить состояние кластера:
kubectl get nodes
Вы должны увидеть все три узла (главный и два рабочих) в списке Ready.
Шаг 8. Развертывание приложений
Теперь, когда Kubernetes кластер запущен и работает, можно приступать к развертыванию приложений. Начните с простого развертывания Nginx, чтобы все протестировать:
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
Для доступа к службе Nginx используйте NodePort, назначенный для развертывания.
Заключение
Поздравляем! Вы успешно создали простой Kubernetes кластер с тремя VPS серверами. Эта конфигурация отлично подходит для обучения, поскольку демонстрирует, как Kubernetes управляет контейнерами и координирует их работу на нескольких узлах. На этой основе вы можете начать экспериментировать с развертыванием более сложных приложений, масштабированием служб и изучением таких функций Kubernetes, как постоянное хранилище, диаграммы Helm и многое другое.