Налаштування багатонодового кластера Kubernetes локально. (Стаття 06)

pic

Застереження: Ця стаття має на меті пояснити, як локально запустити багатонодовий кластер Kubernetes. Це продовження серії статей про Kubernetes.

Будьмо веселими, давайте почнемо.

У цій статті ми створимо наш перший багатонодовий кластер Kubernetes за допомогою Kind (Kubernetes IN Docker). Це дозволить нам мати більш практичний підхід до Kubernetes, де ми зможемо взаємодіяти з контролером та робочими вузлами локально, не запускаючи їх у хмарі.

Чому локальний Kubernetes?

Перш ніж занурюватися в технічні деталі, важливо зрозуміти, чому локальне налаштування є корисним. На відміну від керованих сервісів Kubernetes, таких як AKS, EKS або GKE, локальна установка надає прямий доступ до контрольної плити, що дозволяє нам повністю досліджувати основну архітектуру та ефективно усувати проблеми.

Передумови

  • Встановлений Go 1.16 або новіший.
  • Встановлений Docker, Podman або nerdctl. У статті використовується Docker як середовище виконання контейнерів.
  • Встановлення Kind.

Робіть це самостійно, є багато ресурсів в інтернеті.

Створення однонотного кластера Kubernetes

Найбазовіше налаштування включає створення кластера з одним вузлом контрольної плити, який також слугує робочим вузлом. Команда kind create cluster створює кластер з ім'ям за замовчуванням ‘kind’, використовуючи останній образ Kubernetes.

Процес включає:

  • Завантаження образу вузла.
  • Підготовка вузлів.
  • Запуск контрольної плити.

Після створення кластера ви можете перевірити його статус за допомогою команди kubectl cluster-info, яка покаже кінцеву точку контрольної плити кластера та іншу ключову інформацію. Для перевірки статусу вузлів використовуйте команду kubectl get nodes, яка відобразить один вузол контрольної плити в стані «Ready». На цьому етапі у вас є однонотний кластер, який корисний для базового навчання, але не відображає типове виробниче середовище.

Створення багатонодовго кластера Kubernetes

Щоб симулювати більш реалістичне середовище з окремими вузлами контрольної плити та робочими вузлами, нам потрібно створити багатонодовий кластер. Це досягається за допомогою конфігураційного файлу (YAML), в якому вказуються ролі та кількість вузлів.

Конфігураційний файл (config.yaml)

kind: Cluster  
apiVersion: kind.x-k8s.io/v1alpha4  
nodes:  
- role: control-plane  
- role: worker  
- role: worker

Ця конфігурація створить три вузли:

  • Перший вузол буде призначений як контрольна плита.
  • Інші два вузли будуть діяти як робочі вузли.

Створення кластера

Щоб створити кластер, використовуйте команду kind create cluster з прапорцем — config, вказуючи на ваш конфігураційний файл:

kind create cluster --image  --name  --config config.yaml

Ця команда:

  • Завантажить образ вузла.
  • Підготує вузли.
  • Запустить контрольну плиту.
  • Встановить CNI (Container Network Interface), мережевий плагін.
  • Встановить клас зберігання.

Підключить робочі вузли до контрольної плити. Після створення ви можете підтвердити багатонодове налаштування за допомогою kubectl get nodes, яка відобразить один вузол контрольної плити і два робочі вузли, всі в стані «Ready».

Взаємодія з кількома кластерами

Коли у вас є кілька кластерів, вам потрібно мати спосіб перемикатися між ними. Це місце для kubectl contexts.

Розуміння Contexts

Контекст у kubectl — це спосіб керувати доступом до кількох кластерів Kubernetes.
Кожен контекст містить інформацію про кластер, облікові дані користувача та namespace для використання.

Ось основні команди kubectl для керування контекстами:

  • kubectl config get contexts: Перелічує всі доступні контексти.
  • kubectl config use-context : Перемикається на вказаний контекст.

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

Наприклад, якщо ви створили кластери cka-cluster-1 і cka-cluster-2, ви можете перемикатися між ними за допомогою наступних команд:

kubectl config use-context kind-cka-cluster-1
kubectl config use-context kind-cka-cluster-2

Інструмент командного рядка kubectl є важливим для взаємодії з будь-яким Kubernetes кластером. Він надсилає інструкції до API сервера, який перевіряє та автентифікує запити перед взаємодією з базою даних etcd.

Нам не потрібно пам'ятати всі команди, але ми повинні запам'ятати важливі, які використовуються часто, а для решти можна звертатися до документації Kubernetes.

Офіційна документація Kubernetes є безцінним ресурсом.

kubernetes.io/docs

kubernetes.io/blog

Ці сайти надають всебічну документацію, включаючи підручники, концепції та довідники команд.

Дякую, що дійшли до цього етапу. Сподіваюся, побачити вас усіх у наступній частині цієї серії статей, де ми зануримося глибше та зрозуміємо більше про нашу оркестрацію контейнерів Kubernetes.

Хочу подякувати МР. ПІЮШУ САЧДЕВУ (Youtube: Tech Tutorials with Piyush) за чудові пояснення цих концепцій. Gurudev❤️

Перекладено з: Setting up Multi-Node Kubernetes cluster locally. (Article 06)

Leave a Reply

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