Whatis

Open source утилита для оркестрации контейнерами.
Оркестрация контейнеров - это автоматизация и управление жизненным циклом контейнеров и услуг.

K8s помогает управлять контейнеризированными приложениями (Pod-ами) в любой среде - физические серверы, виртуальные машины, публичные облака - Kuber-у без разницы. K8s не одна программа, а фреймворк (набор технологий). K8s - абстракция; вы переходите от управления сетями, узлами, серверами к управлению приложениями/микросервисами.

K8s автоматизирует рутинные задачи:

  • High Availability (отказоустойчивость)
    отказоустойчивость приложения

  • Scalability (масштабируемость)
    автоматическая масштабируемость, на основе нагрузки
    Kuber может и увеличивать кол-во контейнеров (pod-ов, точнее), и уменьшать (чтобы снизить потребляемые ресурсы). Kuber при повышении нагрузки, на, допустим, Pod с nginx, может запустить еще таких же pod-ов и убрать при отсутствии прежней нагрузки.

  • Disaster Recovery (аварийное восстановление)
    backups, откаты и т.д.

Причины и появления K8s

Почему контейнеры стали популярны?

  • Скорость и простота создания образа
  • Легкие и универсальные
  • Быстрое изменение и откат
  • Экономичное использование ресурсов

Какие проблемы принесли микросервисы?

  • Сложность управления (если их много)
  • Сложность масштабирования
  • Сложность распределения нагрузки
  • Сложность обеспечения отказоустойчивости

Kuber появился для решения проблем, которые принесли с собой микросервисы.

Разработка началась инженерами Google, которые хотели сделать публичный аналог их собственной внутренней разработке Google Borg (управление кластерами).
Исходный код был опубликован в 2014 г.
Версия 1.0 - в 2015 г.
Организован фонд Cloud Native Computing Foundation (CNCF).

Архитектура K8s

  • Pod - самый маленький юнит (абстракция контейнера)
    В нем обычно один контейнер, но иногда (при надобности доп. функций) могут быть несколько вспомогательных.
  • Один pod - одно приложение
  • Каждый Pod имеет свой ip-адрес
    Присваиваются автоматически