Блог компанії 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 та багато іншого.