Kubernetes (K8s) — это мощная система для оркестрации контейнеров, которая автоматизирует развертывание, масштабирование и управление контейнеризированными приложениями. Она позволяет эффективно управлять множеством контейнеров, распределяя их по кластеру узлов (nodes) и обеспечивая отказоустойчивость, масштабируемость и балансировку нагрузки.
Кластер Kubernetes состоит из:
Deployment описывает, как должны быть запущены контейнеры. Например, создадим Deployment для приложения на основе образа myapp:1.0
.
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: myapp:1.0
ports:
- containerPort: 80
myapp:1.0
.Применим Deployment с помощью команды kubectl apply
:
kubectl apply -f myapp-deployment.yaml
Service обеспечивает доступ к Pod. Создадим Service для нашего приложения.
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
selector:
app: myapp
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
app: myapp
.Применим Service с помощью команды kubectl apply
:
kubectl apply -f myapp-service.yaml
Kubernetes позволяет легко масштабировать приложение. Например, увеличим количество реплик до 5:
kubectl scale deployment myapp-deployment --replicas=5
Kubernetes поддерживает rolling updates (постепенное обновление). Например, обновим образ до версии myapp:2.0
:
kubectl set image deployment/myapp-deployment myapp-container=myapp:2.0
Создание Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp-deployment
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: myapp:1.0
ports:
- containerPort: 80
Применение Deployment:
kubectl apply -f myapp-deployment.yaml
Создание Service:
apiVersion: v1
kind: Service
metadata:
name: myapp-service
spec:
selector:
app: myapp
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
Применение Service:
kubectl apply -f myapp-service.yaml
Масштабирование:
kubectl scale deployment myapp-deployment --replicas=5
Обновление:
kubectl set image deployment/myapp-deployment myapp-container=myapp:2.0
Kubernetes — это мощный инструмент для оркестрации контейнеров, который автоматизирует развертывание, масштабирование и управление приложениями. Основные компоненты Kubernetes включают Pod, Deployment, Service, ConfigMap и Secrets. С помощью Kubernetes можно легко масштабировать приложения, обеспечивать отказоустойчивость и балансировку нагрузки. Для работы с Kubernetes используются YAML-файлы для описания ресурсов и команды kubectl
для управления кластером.