Что такое Kubernetes (K8s)?
Kubernetes — система оркестрации контейнеров: она сама запускает нужное количество контейнеров на группе серверов, перезапускает упавшие, распределяет нагрузку и выкатывает обновления без остановки сервиса.
Docker решает задачу «запустить один контейнер». Kubernetes решает задачу «управлять сотнями контейнеров на десятках серверов»: где именно их разместить, что делать при отказе узла, как масштабировать под нагрузку.
Работа строится декларативно: вы описываете желаемое состояние — «пять экземпляров этого сервиса, вот такие ресурсы, такой адрес», — а кластер постоянно приводит реальность к этому описанию. Отсюда самовосстановление и плавные обновления.
Kubernetes даёт много, но и стоит дорого в сложности. Для небольшого проекта с парой сервисов он чаще всего избыточен.
Связанные термины
Docker — инструмент, который упаковывает приложение вместе со всем окружением — кодом, зависимостями, настройками — в контейнер. Такой контейнер запускается одинаково на компьютере разработчика, на тестовом стенде и на сервере.
ContainerКонтейнер — изолированная среда, в которой приложение запускается вместе со своими зависимостями, но использует ядро операционной системы хоста. Внутри контейнера программа «видит» только собственные файлы и процессы.
DevOpsDevOps — подход к разработке, в котором создание программы и её эксплуатация объединены в один процесс: та же команда отвечает и за код, и за то, как он собирается, разворачивается и работает на серверах. Цель — выпускать изменения часто, быстро и безопасно.
MicroservicesМикросервисы — архитектурный подход, при котором приложение состоит из нескольких небольших самостоятельных сервисов. Каждый отвечает за свою область — оплату, каталог, уведомления, — разворачивается отдельно и общается с остальными через API.
Cloud ComputingОблачные технологии — аренда вычислительных ресурсов у провайдера вместо покупки собственных серверов. Компания берёт нужные мощности, базы и сервисы по требованию и платит только за фактическое потребление.