Что такое Kubernetes?
Kubernetes — это платформа для управления контейнерными приложениями, позволяющая автоматизировать развертывание, масштабирование и управление ими.
Основные компоненты Kubernetes
Control Plane
Control Plane управляет всеми операциями внутри кластера:
- API Server: точка входа для взаимодействия с кластером через CLI или SDK.
- Scheduler: распределяет задачи между нодами.
- Controller Manager: следит за состоянием объектов и восстанавливает их при сбоях.
- etcd: распределённое хранилище данных для хранения конфигурации и состояния кластера.
Worker Nodes
Worker Nodes выполняют приложения в виде контейнеров. Каждая нода содержит следующие элементы:
- Kubelet: агент, который взаимодействует с Control Plane и выполняет инструкции.
- Container Runtime: среда выполнения контейнеров (например, Docker).
- kube-proxy: обеспечивает сетевую доступность сервисов.
Запуск собственного кластера
Для запуска локального кластера можно использовать Minikube или Kind. Рассмотрим пример с Minikube:
minikube start --driver=docker
kubectl get nodes # проверка доступности узла
После успешного старта можно создавать свои первые деплойменты и сервисы.
Пример простого деплоймента
Создадим простой деплоймент с помощью YAML-файла:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
Применим его командой kubectl apply:
kubectl apply -f deployment.yaml
Теперь у нас есть три реплики веб-сервера Nginx, которые автоматически управляются Kubernetes.