VPS-сервер - ідеальне рішення для безлічі технічних завдань, включно з розміщенням високопродуктивних веб-сайтів, розгортанням призначеного для користувача прог...
Блог компанії 3v-Hosting
10 хв.
Якщо ви хочете отримати практичний досвід роботи з оркеструванням контейнерів, створення Kubernetes кластера з трьох віртуальних приватних серверів (VPS) - відмінний спосіб для цього. Kubernetes - це потужна система з відкритим вихідним кодом для автоматизації розгортання, масштабування та управління контейнерними додатками. Вона широко використовується у виробничих середовищах. У цій статті ви дізнаєтеся, як крок за кроком створити Kubernetes кластер за допомогою трьох серверів VPS.
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.
На кожному VPS оновіть список пакетів та оновіть встановлені пакети.
sudo apt update && sudo apt upgrade -y
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
На кожному 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
На 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>
Після ініціалізації кластера необхідно налаштувати 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, оскільки робочі вузли ще не додані.
Kubernetes вимагає мережевий плагін для управління мережею підсистем. Flannel - простий і популярний варіант для цієї мети.
На головному вузлі встановіть Flannel:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Зачекайте кілька хвилин, поки завершиться налаштування мережі. Ви можете перевірити статус, виконавши:
kubectl get pods --all-namespaces
На кожному з двох робочих вузлів використовуйте наданий раніше токен для приєднання до кластера. Виконайте наступну команду (замінивши на фактичний токен і хеш):
sudo kubeadm join 192.168.1.100:6443 --token <token> --discovery-token-ca-cert-hash sha256:<hash>
Після успішного приєднання перевірте статус на головному вузлі:
kubectl get nodes
Тепер ви повинні побачити робочі вузли в списку Ready.
Виконайте наступну команду, щоб перевірити стан кластера:
kubectl get nodes
Ви повинні побачити всі три вузли (головний і два робочих) в списку Ready.
Тепер, коли Kubernetes кластер запущений і працює, можна приступати до розгортання додатків. Почніть з простого розгортання Nginx, щоб все протестувати:
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
Для доступу до служби Nginx використовуйте NodePort, призначений для розгортання.
Вітаємо! Ви успішно створили простий Kubernetes кластер з трьома VPS серверами. Ця конфігурація чудово підходить для навчання, оскільки демонструє, як Kubernetes керує контейнерами та координує їхню роботу на декількох вузлах. На цій основі ви можете почати експериментувати з розгортанням більш складних додатків, масштабуванням служб та вивченням таких функцій Kubernetes, як постійне сховище, діаграми Helm та багато іншого.
Детальний посібник з використання tmux для Linux та VPS: встановлення, створення сесій, робота з вікнами та панелями, гарячі клавіші та захист тривалих процесів...
Як визначити, хто видалив файл на сервері під управлінням Linux. Перевірка історії команд Bash, системних журналів, auditd, Docker, Git та інших джерел, які доп...
Як перенести Docker Compose на новий VPS без простою: підготовка сервера, перенесення Docker Volumes, баз даних і файлів, перевірка проєкту та безпечне перемика...