Ответ
Kubernetes использовался как платформа для оркестрации контейнеризированных микросервисов, обеспечивая развертывание, масштабирование и управление.
Ключевые объекты и их применение:
-
Deployment: Определяет желаемое состояние для подов (реплики, образ). Обеспечивает rolling updates и rollback.
apiVersion: apps/v1 kind: Deployment metadata: name: api-service spec: replicas: 3 selector: matchLabels: app: api-service template: # Шаблон пода metadata: labels: app: api-service spec: containers: - name: api image: my-registry/api-service:v1.2.0 ports: - containerPort: 8080 envFrom: - configMapRef: name: api-config # Конфигурация из ConfigMap -
Service: Абстракция для доступа к группе подов (обычно по селектору
app: api-service). Создает стабильный DNS-имя и балансировку нагрузки.apiVersion: v1 kind: Service metadata: name: api-service spec: selector: app: api-service ports: - protocol: TCP port: 80 # Порт сервиса targetPort: 8080 # Порт контейнера type: ClusterIP -
Ingress: Управляет внешним HTTP/HTTPS доступом к сервисам, маршрутизируя трафик на основе хоста или пути.
Практические преимущества:
- Self-healing: Kubernetes автоматически перезапускает упавшие контейнеры и заменяет неисправные ноды.
- Горизонтальное масштабирование:
kubectl scale deployment api-service --replicas=5. - Управление конфиденциальными данными: Использование Secrets для хранения паролей и токенов.
- Хранение данных: Использование PersistentVolumes и PersistentVolumeClaims для stateful-приложений.