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