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 для доступу до них.