Kubernetes

k8s

Что это такое

Kubernetes — это оркестратор: вы объявляете, сколько копий контейнера должно работать, как к ним обращаться и какие ресурсы им нужны, а он непрерывно приводит реальность в соответствие с объявленным. Он размещает контейнеры по пулу машин, перезапускает упавшее, заменяет исчезнувшее и постепенно выпускает новые версии. Это платформа для запуска чужого программного обеспечения, и большая часть её работы — обработка отказов.

Почему это важно

Ручной запуск контейнеров на нескольких машинах перестаёт работать, как только машина умирает, версию нужно выпустить без простоя или спрос меняется быстрее, чем кто-то успевает зайти на сервер. Kubernetes автоматизирует именно эти задачи и делает это через декларативный интерфейс: желаемое состояние живёт в системе контроля версий, а кластеру остаётся цикл согласования до совпадения. Цена существенна: кластер — распределённая система со своим словарём, режимами отказа и операционной нагрузкой, поэтому он окупается, когда рабочая нагрузка действительно динамична или команде нужна единая цель развёртывания, и оказывается тяжестью, когда хватило бы одного контейнера на одном хосте.

Что в этом треке

  1. Объектная модель (06-cloud-devops/14-kubernetes/01-the-object-model) — pod’ы, deployment’ы и service’ы и то, как они собираются вместе.
  2. Планирование и масштабирование (06-cloud-devops/14-kubernetes/02-scheduling-and-scaling) — как работа размещается по узлам и как растёт и сокращается ёмкость.
  3. Конфигурация и секреты (06-cloud-devops/14-kubernetes/03-configuration-and-secrets) — как отделить образ от среды, в которой он работает.
  4. Самовосстановление и наблюдаемость (06-cloud-devops/14-kubernetes/04-self-healing-and-observability) — что делает кластер, когда что-то ломается, и как вы об этом узнаёте.

Предварительные требования

Что читать дальше

  • Docker (06-cloud-devops/06-docker) — шаг упаковки, на который опирается оркестратор, поэтому читайте его первым.
  • Helm (06-cloud-devops/21-helm) — как группы манифестов упаковываются и версионируются, когда их становится много.
  • Облачно-нативные вычисления (06-cloud-devops/13-cloud-native-computing) — привычки проектирования, которые делают рабочую нагрузку подходящей для такой платформы.