Как создать многоузловой кластер Kubernetes с использованием ВМ и перенаправления портов

Вопрос или проблема

Я могу получить несколько ВМ от lambdalabs или tensordock, и они предоставляют публичные IP-адреса для каждой машины, на которой работает каждая ВМ.

Как использовать kubeadm и создать главный узел на одной ВМ и подключить к нему узлы (другие ВМ)? Хотя при его создании на ВМ он создается с использованием внутреннего IP адреса ВМ?

Ответ или решение

Создание многонодного кластера Kubernetes с использованием виртуальных машин и перенаправления портов — задача, которая требует внимательного подхода к настройке сети и конфигурации самого Kubernetes. Ниже приведены подробные шаги для реализации данного проекта, включая использование инструментов kubeadm и настройку сети между виртуальными машинами (ВМ).

Шаги по созданию многонодного кластера Kubernetes с помощью kubeadm

1. Подготовка виртуальных машин

  • Получите несколько виртуальных машин от таких провайдеров, как Lambda Labs или TensorDock. Убедитесь, что на каждой из этих ВМ установлены необходимые операционные системы (например, Ubuntu или CentOS).
  • Назначьте публичные IP-адреса каждой ВМ. Это необходимо для доступа к кластеру из интернета и связывания узлов.

2. Установка необходимых инструментов

Установка Docker

Kubernetes требует, чтобы на всех узлах был установлен контейнерный раннер. Обычно это Docker:

# Установите Docker на всех узлах
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce
sudo systemctl enable docker
sudo systemctl start docker
Установка kubeadm, kubelet и kubectl
# Установите необходимые компоненты Kubernetes на всех узлах
sudo apt-get update
sudo apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

3. Инициализация управляющего узла (Master Node)

Выберите одну из ВМ в качестве управляющего узла. На этом узле выполните команду:

sudo kubeadm init --pod-network-cidr=10.244.0.0/16

После успешного выполнения инициализации вы получите команду для подключения рабочих узлов к кластеру, которая будет выглядеть примерно так:

kubeadm join <IP-адрес управляющего узла>:6443 --token <токен> --discovery-token-ca-cert-hash sha256:<хэш>

4. Настройка kubectl для пользователя

После инициализации управляющего узла выполните следующие команды для настройки kubectl:

# Настройка доступа для текущего пользователя
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

5. Установка сетевой подсистемы

Выберите один из доступных сетевых плагинов, например Flannel, Calico или Weave, и установите его. Например, для Flannel:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/k8s-manifests/kube-flannel.yml

6. Присоединение рабочих узлов к кластеру

Теперь вам нужно запустить команду, полученную на этапе инициализации, на всех рабочих узлах (других ВМ):

kubeadm join <IP-адрес управляющего узла>:6443 --token <токен> --discovery-token-ca-cert-hash sha256:<хэш>

7. Настройка перенаправления портов

Для доступа к управляющему узлу кластера из внешней сети (например, для доступа к Kubernetes Dashboard или другим сервисам) настройте перенаправление портов на вашем роутере или используйте iptables:

# Пример команды перенаправления порта
sudo iptables -t nat -A PREROUTING -p tcp --dport 6443 -j DNAT --to-destination <IP-адрес управляющего узла>:6443

Заключение

Следуя указанным выше шагам, вы сможете успешно создать многонодный кластер Kubernetes, используя виртуальные машины и перенаправление портов. Эта структура позволит вам значительно масштабировать приложения и управлять контейнерами более эффективно. Не забудьте также настроить безопасность вашего кластера и ограничить доступ к управляющему узлу только для авторизованных пользователей.

Оцените материал
Добавить комментарий

Капча загружается...