Ответ
Kubernetes (K8s) — это система оркестрации контейнеризированных приложений с открытым исходным кодом. Я использую его для автоматизации развертывания, масштабирования и управления приложениями, упакованными в контейнеры.
Основные концепции, с которыми я работаю:
- Кластер: Состоит из управляющих (control plane) и рабочих (worker) узлов.
- Control Plane: Включает API-сервер (kube-apiserver), хранилище состояния кластера (etcd), планировщик (kube-scheduler) и контроллеры (controller manager).
- Рабочий узел: Запускает контейнеры с помощью среды выполнения (например, containerd) и управляется компонентами Kubelet и Kube-proxy.
- Pod: Базовая единица выполнения, содержащая один или несколько контейнеров с общими сетевыми и дисковыми пространствами.
- Deployment: Контроллер, который управляет жизненным циклом набора идентиционных Pod'ов, обеспечивая обновления (rolling updates) и откаты.
Пример манифеста Deployment для веб-приложения:
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-frontend
spec:
replicas: 3
selector:
matchLabels:
app: frontend
template:
metadata:
labels:
app: frontend
spec:
containers:
- name: nginx
image: nginx:1.21-alpine
ports:
- containerPort: 80
resources:
requests:
memory: "128Mi"
cpu: "100m"
На практике Kubernetes позволяет мне:
- Обеспечивать отказоустойчивость: если Pod падает, K8s автоматически перезапускает его.
- Масштабировать приложение вручную или автоматически (HPA) в зависимости от нагрузки.
- Управлять конфигурациями и секретами централизованно.
- Организовывать сетевое взаимодействие между сервисами внутри кластера через Service и Ingress ресурсы.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶