Kubernetes: Краткое описание и подборка материалов
Сначала рекомендуем изучить пост про Docker тут.
Kubernetes — платформа с открытым исходным кодом для управления приложениями в контейнерах. Kubernetes позволяет автоматизировать развёртывание, масштабирование и координацию приложений в условиях кластера — набора физических или виртуальных машин, на которых запускаются контейнеры.
Kubernetes активно используется в микросервисной архитектуре, так как он предоставляет необходимые абстракции и механизмы для оркестровки контейнеров, в которых развёртываются микросервисы.
Основные понятия
- Узел (node) – физическая или виртуальная машина, на которой запускаются поды.
- Под (pod) – группа контейнеров с общими разделами, запускаемых как единое целое. Минимальная единица развёртывания в Kubernetes.
- Сервис (service) – абстракция, которая определяет политику доступа к подам. Сервис балансирует трафик между подами и предоставляет единую точку входа для клиентов.
- Replication Controllers – контроллер, который гарантирует, что определенное количество реплик (копий) пода будут запущены в любой момент времени.
- Раздел (Volume) – директория, которая доступна в контейнере.
- Лейблы (Labels) – пары ключ-значение которые прикрепляются к объектам, например, к подам.
Главные функции K8s
- Централизованное управление (оркестровка) контейнерами. Kubernetes автоматически управляет жизненным циклом контейнеров от развёртывания до откатов обновлений.
- Распределение нагрузки и масштабирование кластера. Kubernetes распределяет контейнеры по узлам так, чтобы они не тратили лишние ресурсы. Если нагрузка на систему растёт, Kubernetes может автоматически добавлять контейнеры и узлы.
- Управление конфигурациями. В Kubernetes есть средство для центрального управления конфигурациями — ConfigMaps для настроек и Secrets для конфиденциальных данных.
Kubernetes 🆚 Docker
- Docker — инструмент для создания и запуска контейнеров. Docker работает в рамках отдельных узлов. Если у вас несколько узлов, то на каждом из них запущен докер-демон, который ничего не знает о существовании других узлов. Каждый демон знает лишь о том, что происходит на его узле.
- Kubernetes — оркестратор, инструмент для управления контейнерами. Kubernetes позволяет построить кластер — распределенную отказоустойчивую систему, в то время как Docker работает на отдельном узле. В кластере может быть много узлов, контейнеров и настроек, но всеми ими можно управлять через единый сервер. В кластер можно, например, отправить команду на обновление приложения, и Kubernetes сам найдет, на каких узлах оно находится, и обновит его.
Ещё есть Docker Swarm — встроенный в докер инструмент оркестровки контейнеров. Его как как раз и можно полноценно сравнивать с Kubernetes.
✅ Преимущества Kubernetes
- Масштабируемость. Kubernetes позволяет горизонтально масштабировать приложения, добавляя или удаляя поды в зависимости от нагрузки. Kubernetes также поддерживает вертикальное масштабирование, изменяя выделенные ресурсы для подов.
- Надежность. Kubernetes обеспечивает высокую доступность приложений, перезапуская поды в случае сбоя. Kubernetes поддерживает стратегии бесперебойного обновления, которые позволяют внедрять новые версии приложений без простоя.
- Эффективность. Kubernetes позволяет оптимально распределять поды по доступным узлам. Kubernetes автоматически управляет ресурсами и позволяет задавать ограничения и приоритеты для подов.