1. What is Kubernetes?1. Что такое Kubernetes?
Kubernetes (often "K8s") is a container orchestrator: an open-source system that runs your containers across a fleet of machines and keeps them healthy. You tell it the desired state ("run 5 copies of this app"), and Kubernetes constantly works to make reality match — scheduling containers onto machines, restarting crashed ones, scaling up and down, and wiring up networking.
Kubernetes (часто «K8s») — это оркестратор контейнеров: опенсорсная система, которая запускает твои контейнеры по парку машин и поддерживает их в рабочем состоянии. Ты говоришь ей желаемое состояние («запусти 5 копий этого приложения»), и Kubernetes постоянно приводит реальность к нему — раскидывает контейнеры по машинам, перезапускает упавшие, масштабирует вверх и вниз, настраивает сеть.
2. Why does it exist?2. Зачем он нужен?
Docker runs one container on one machine. Real systems need hundreds or thousands across a cluster — and doing that by hand is impossible. Kubernetes automates the hard parts:
Docker запускает один контейнер на одной машине. Реальным системам нужны сотни и тысячи по кластеру — и делать это вручную невозможно. Kubernetes автоматизирует сложное:
- Scheduling. Decides which machine has room (CPU/memory) to run each container.
- Self-healing. A container crashes or a machine dies → Kubernetes restarts/reschedules it automatically.
- Scaling. Add or remove replicas based on load (manually or auto-scaling).
- Rollouts & rollbacks. Deploy a new version gradually; roll back instantly if it misbehaves.
- Service discovery & networking. Containers find and talk to each other via stable names, with built-in load balancing.
- Планирование. Решает, на какой машине есть место (CPU/память) для каждого контейнера.
- Самовосстановление. Контейнер упал или умерла машина → Kubernetes перезапускает/переразмещает автоматически.
- Масштабирование. Добавляет или убирает реплики по нагрузке (вручную или авто-скейлинг).
- Раскатки и откаты. Деплоит новую версию постепенно; мгновенно откатывает, если ведёт себя плохо.
- Service discovery и сеть. Контейнеры находят друг друга по стабильным именам, со встроенной балансировкой.
3. Core concepts3. Ключевые понятия
① Pod① Pod
The smallest deployable unit — one (or a few tightly-coupled) containers that share network and storage. You rarely manage pods directly; higher objects manage them for you. Pods are disposable and can be killed and recreated anytime.
Наименьшая единица развёртывания — один (или несколько тесно связанных) контейнеров, делящих сеть и хранилище. Pod-ами редко управляют напрямую; за тебя это делают объекты выше. Pod-ы одноразовые: их могут убить и пересоздать в любой момент.
② Deployment② Deployment
Declares "I want N replicas of this pod, from this image". It keeps that many running, handles rolling updates and rollbacks. The workhorse for stateless apps.
Объявляет «хочу N реплик этого pod из этого образа». Держит столько запущенными, делает постепенные обновления и откаты. Рабочая лошадка для stateless-приложений.
③ Service③ Service
A stable network address + load balancer in front of a changing set of pods. Pods come and go with new IPs; the Service gives a constant name to reach them.
Стабильный сетевой адрес + балансировщик перед меняющимся набором pod-ов. Pod-ы появляются и исчезают с новыми IP; Service даёт постоянное имя для обращения к ним.
④ Namespace④ Namespace
A virtual partition of the cluster to isolate teams/environments (e.g. dev vs prod) and scope names, quotas and access.
Виртуальное разделение кластера, чтобы изолировать команды/окружения (например dev vs prod) и ограничить имена, квоты и доступ.
⑤ ConfigMap & Secret⑤ ConfigMap и Secret
Inject configuration and credentials into pods without baking them into the image. ConfigMap = non-sensitive config; Secret = passwords/keys (base64, ideally encrypted).
Прокидывают конфигурацию и креды в pod-ы, не запекая их в образ. ConfigMap = несекретный конфиг; Secret = пароли/ключи (base64, в идеале шифрованные).
⑥ Job & CronJob⑥ Job и CronJob
For batch work: a Job runs a pod to completion (e.g. a data processing task), and a CronJob runs Jobs on a schedule — the closest K8s primitives to a data pipeline run.
Для батч-работы: Job запускает pod до завершения (например задача обработки данных), а CronJob запускает Job-ы по расписанию — ближайшие примитивы K8s к запуску дата-пайплайна.
4. Architecture (high level)4. Архитектура (в целом)
A cluster has a control plane (the brain) and worker nodes (the muscle that runs your pods).
У кластера есть control plane (мозг) и worker nodes (мышцы, запускающие твои pod-ы).
5. A minimal example5. Минимальный пример
A Deployment asking for 3 replicas of an app, declared in YAML and applied with one command.
Deployment, запрашивающий 3 реплики приложения, описанный в YAML и применённый одной командой.
# deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-pipeline spec: replicas: 3 # desired state: keep 3 pods alive selector: matchLabels: { app: my-pipeline } template: metadata: labels: { app: my-pipeline } spec: containers: - name: worker image: my-pipeline:1.0 # the Docker image to run resources: requests: { cpu: "500m", memory: "512Mi" }
# apply it (declarative) and watch kubectl apply -f deployment.yaml kubectl get pods # see your 3 pods; kill one → K8s recreates it
kubectl delete pod ... and a new one appears within seconds. You asked for 3; the controller keeps reconciling back to 3. That loop is the whole essence of Kubernetes.
Удали pod через kubectl delete pod ... — и новый появится за секунды. Ты попросил 3; контроллер постоянно reconcile-ит обратно к 3. Этот цикл и есть вся суть Kubernetes.
6. Why a data engineer cares6. Почему это важно дата-инженеру
- Your orchestrators run on it. Flyte is Kubernetes-native; Airflow's KubernetesExecutor and Spark-on-K8s launch each task as a pod.
- Elastic compute. A heavy backfill spins up many pods, then scales back down — you pay for what you use.
- Resource isolation. Per-pod CPU/memory requests stop one greedy job from starving others.
- Reliability for free. Self-healing + rescheduling means a crashed task or dead node doesn't silently stall your pipeline.
- Provisioned by IaC. The cluster itself is usually created with Terraform (EKS/AKS/GKE), and you deploy onto it.
- Твои оркестраторы работают на нём. Flyte — Kubernetes-native; KubernetesExecutor в Airflow и Spark-on-K8s запускают каждую таску как pod.
- Эластичные вычисления. Тяжёлый бэкфил поднимает много pod-ов, затем сворачивается — платишь за то, что используешь.
- Изоляция ресурсов. Запросы CPU/памяти на pod не дают одному жадному джобу голодоморить остальных.
- Надёжность «бесплатно». Самовосстановление + переразмещение означают, что упавшая таска или мёртвая нода не застопорят пайплайн тихо.
- Поднимается через IaC. Сам кластер обычно создаётся Terraform (EKS/AKS/GKE), а ты деплоишь на него.
7. Quick self-check7. Быстрая самопроверка
Answer in your head, then tap to flip.Ответь про себя, потом нажми, чтобы перевернуть.