Блог компании 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 и многое другое.