Вступ
Kubernetes — потужна платформа для оркестрації контейнеризованих додатків. У цьому посібнику ми пройдемо через процес налаштування кластера Kubernetes на EC2 за допомогою kubeadm
, зокрема зосередимося на створенні як майстер-нод, так і робочих вузлів. Ми також розглянемо налаштування мережі, приєднання вузлів і встановлення мережевого плагіна для забезпечення комунікації pod-to-pod.
Наприкінці цього посібника у вас буде повністю функціонуючий кластер Kubernetes, що працює на ваших EC2 інстансах, готовий до розгортання ваших додатків.
Попередні вимоги
Перед тим, як почати, переконайтеся, що у вас є наступне:
- Два EC2 інстанси: один для майстер-нод і один для робочого вузла.
- На обох інстансах встановлена Ubuntu 22.04 або подібна операційна система.
- Базові знання роботи з командним рядком Linux і AWS EC2.
Налаштування груп безпеки
Перед початком установки переконайтеся, що ваші майстер-нод і робочі вузли можуть взаємодіяти один з одним, налаштувавши правила груп безпеки.
Група безпеки майстер-нод
Для майстер-нод відкрийте наступні порти для дозволу комунікації з робочими вузлами та зовнішніми клієнтами:
Група безпеки робочих вузлів
Для робочого вузла відкрийте наступні порти:
Переконайтеся, що правила груп безпеки дозволяють двосторонню комунікацію між майстер-нод і робочими вузлами для необхідних портів.
Крок 1: Налаштування імені хоста та оновлення файлу hosts
Почніть з налаштування імені хоста для майстер-нод і робочих вузлів, а потім оновіть файл /etc/hosts
, щоб дозволити мережеву комунікацію між вузлами.
На майстер-нод виконайте:
sudo hostnamectl set-hostname "master"
На робочому вузлі виконайте:
sudo hostnamectl set-hostname "worker"
Далі оновіть файл /etc/hosts
на обох вузлах, додавши IP-адреси та імена хостів один одного. Додайте наступні рядки:
master
worker
Крок 2: Вимкнення Swap (на всіх вузлах)
Kubernetes вимагає вимкнення swap для оптимальної роботи. Виконайте наступні команди на обох майстер-нодах і робочих вузлах для вимкнення swap:
sudo apt update
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
Крок 3: Додавання параметрів ядра (на всіх вузлах)
Щоб Kubernetes працював належним чином, необхідно завантажити необхідні модулі ядра та налаштувати необхідні параметри sysctl.
Виконайте наступні команди на обох майстер-нодах і робочих вузлах:
# Завантаження необхідних модулів ядра
sudo tee /etc/modules-load.d/containerd.conf <
В цьому посібнику ми використовуємо **containerd**.
Встановіть containerd та його залежності на **обох майстер-нодах і робочих вузлах**:
sudo apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates
```
Далі додайте репозиторій Docker і встановіть containerd:
# Додати репозиторій Docker
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# Оновити список пакетів і встановити containerd
sudo apt update
sudo apt install -y containerd.io
Налаштуйте containerd для використання systemd як драйвера cgroup:
# Налаштувати containerd
containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
# Встановити драйвер cgroup systemd
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
# Перезапустити containerd
sudo systemctl restart containerd
sudo systemctl enable containerd
Крок 5: Додати репозиторій Kubernetes Apt (на всіх вузлах)
Щоб встановити компоненти Kubernetes, додайте репозиторій Kubernetes:
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
Крок 6: Встановлення Kubectl, Kubeadm і Kubelet (на всіх вузлах)
Встановіть інструменти командного рядка Kubernetes (kubectl
, kubeadm
, kubelet
) на обох майстер-нодах і робочих вузлах:
bashCopysudo apt update
sudo apt install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
Крок 7: Ініціалізація кластера Kubernetes за допомогою Kubeadm (на майстер-ноді)
Ініціалізуйте контрольну площину Kubernetes на майстер-ноді:
sudo kubeadm init --control-plane-endpoint=master
Після завершення налаштуйте kubectl
для взаємодії з кластером:
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
Крок 8: Додати робочі вузли до кластера
На робочих вузлах виконайте команду kubeadm join
, що була згенерована під час ініціалізації майстер-нод:
kubeadm join :6443 --token \
--discovery-token-ca-cert-hash sha256:
Крок 9: Встановлення мережевого плагіна Kubernetes (на майстер-ноді)
Встановіть мережевий плагін Calico на майстер-ноді, щоб забезпечити комунікацію між pod'ами на різних вузлах:
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml
Крок 10: Перевірка кластера і тестування (на майстер-ноді)
Перевірте статус ваших pod'ів та вузлів, щоб переконатися, що все працює правильно:
kubectl get pods -n kube-system
kubectl get nodes
Крок 11: Розгортання тестового додатка в кластері (на майстер-ноді)
Розгорніть тестовий додаток (nginx), щоб перевірити, чи правильно працює ваш кластер:
# Створіть простір імен
kubectl create ns demo-app# Розгорніть додаток nginx
kubectl create deployment nginx-app --image nginx --replicas 1 --namespace demo-app# Перевірте статус розгортання та pod'ів
kubectl get deployment -n demo-app
kubectl get pods -n demo-app# Відкрийте додаток через NodePort
kubectl expose deployment nginx-app -n demo-app --type NodePort --port 80# Перевірте статус сервісу
kubectl get svc -n demo-app
Висновок 🎉🚀
🎉 Вітаємо! Ви успішно налаштували кластер Kubernetes на EC2 за допомогою kubeadm! 🙌 Тепер, коли ваш кластер працює, ви готові до розгортання ваших контейнеризованих додатків і повного використання потужних можливостей оркестрації Kubernetes. 🚢
З Kubernetes ви можете масштабувати свої додатки, керувати робочими навантаженнями та забезпечити високу доступність.
🌐 Незалежно від того, чи запускаєте ви один додаток, чи кілька мікросервісів, Kubernetes вас покриває! 💡
Якщо цей посібник був корисним і ви хочете залишатися на зв'язку або обговорити Kubernetes детальніше, не соромтеся підключитися до мене на LinkedIn! 👥
🔗 Підключіться до мене на LinkedIn 📱
Перекладено з: Deploy Kubernetes on EC2: Installing Kubeadm Like a Pro