Розгорніть Kubernetes на EC2: Встановлення Kubeadm як професіонал

pic

Вступ

Kubernetes — потужна платформа для оркестрації контейнеризованих додатків. У цьому посібнику ми пройдемо через процес налаштування кластера Kubernetes на EC2 за допомогою kubeadm, зокрема зосередимося на створенні як майстер-нод, так і робочих вузлів. Ми також розглянемо налаштування мережі, приєднання вузлів і встановлення мережевого плагіна для забезпечення комунікації pod-to-pod.
Наприкінці цього посібника у вас буде повністю функціонуючий кластер Kubernetes, що працює на ваших EC2 інстансах, готовий до розгортання ваших додатків.

Попередні вимоги

Перед тим, як почати, переконайтеся, що у вас є наступне:

  • Два EC2 інстанси: один для майстер-нод і один для робочого вузла.
  • На обох інстансах встановлена Ubuntu 22.04 або подібна операційна система.
  • Базові знання роботи з командним рядком Linux і AWS EC2.

Налаштування груп безпеки

Перед початком установки переконайтеся, що ваші майстер-нод і робочі вузли можуть взаємодіяти один з одним, налаштувавши правила груп безпеки.

Група безпеки майстер-нод
Для майстер-нод відкрийте наступні порти для дозволу комунікації з робочими вузлами та зовнішніми клієнтами:

pic

Група безпеки робочих вузлів
Для робочого вузла відкрийте наступні порти:

pic

Переконайтеся, що правила груп безпеки дозволяють двосторонню комунікацію між майстер-нод і робочими вузлами для необхідних портів.

Крок 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

Leave a Reply

Your email address will not be published. Required fields are marked *