Skip to content

Kubernates

Kubernates - K8s

Kubernates

Kubernetes — це система з відкритим кодом для автоматизації розгортання, масштабування та управління контейнеризованими застосунками.

Основні аспекти, які характеризують Kubernetes

  • Оркестрація контейнерів: Kubernetes дозволяє автоматизувати процеси, пов’язані з розгортанням, оновленням, балансуванням навантаження та управлінням контейнеризованими застосунками.
  • Підтримка контейнерів: Переважно працює з Docker, але підтримує й інші контейнерні середовища.
  • Масштабованість: Спрощує горизонтальне масштабування застосунків за допомогою зміни кількості реплік.
  • Висока доступність: Забезпечує відмовостійкість через автоматичне перезапускання контейнерів або їх перенесення на інші вузли кластера.
  • Мікросервіси: Добре підходить для архітектури, побудованої за принципом мікросервісів, завдяки підтримці складних взаємозв’язків між сервісами.
  • Секрети та конфігурації: Можливість безпечного зберігання чутливої інформації (паролі, ключі) та роботи з конфігураційними даними.

Основні компоненти Kubernates

  • Кластер - це група машин (вузлів), які працюють разом для управління контейнеризованими застосунками. У кластері є master node (відповідає за управління) і worker nodes (виконують робочі навантаження).
  • Pod - найменша одиниця у Kubernetes, яка представляє собою абстракцію над одним або кількома контейнерами. Всі контейнери в поді мають спільну мережу та можуть взаємодіяти між собою через localhost.
  • Node - це фізичний або віртуальний сервер у кластері. Кожен вузол містить компоненти Kubernetes, такі як kubelet, які дозволяють виконувати поди.
  • Deployment - контролер, який визначає бажаний стан застосунку (кількість реплік, образ контейнера тощо). Він відповідає за оновлення подів, їх масштабування та забезпечення безперервної роботи.
  • Service - це об’єкт, який забезпечує стабільну IP-адресу та DNS-ім’я для доступу до подів. Використовується для балансування навантаження між подами та дозволяє іншим сервісам або користувачам звертатися до подів через єдиний вхідний інтерфейс.

Приклад YAML-файлу для створення Deployment і Service:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: example-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: example
  template:
    metadata:
      labels:
        app: example
    spec:
      containers:
      - name: example-container
        image: nginx:latest
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: example-service
spec:
  selector:
    app: example
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  type: ClusterIP

Цей приклад створює Deployment з трьома подами Nginx і Service для доступу до них.