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 автоматически управляет ресурсами и позволяет задавать ограничения и приоритеты для подов.
⛔️ Недостатки Kubernetes
- Сложность. Kubernetes сложно изучать, настраивать и поддерживать, требуются дополнительные инструменты и процессы для работы приложений.
- Необходимость адаптации приложений. Kubernetes требует, чтобы приложения соответствовали определенным правилам и практикам. Это может потребовать изменения или создания приложений с нуля.
- Высокие требования к ресурсам. Kubernetes занимает много ресурсов. Это может снизить производительность или увеличить стоимость приложений.
🕸 Подборка материалов по Kubernetes
🔹 Наши посты
🗒 Статьи (теория)
- Кратко о Kubernetes
- Kubernetes — основные понятия
- Про возможности Kubernetes в сравнении с Docker
- Подробнее про компоненты Kubernetes
- Внутреннее устройство Kubernetes-кластера простым языком
- Kubernetes: большой обзор технологии, установка и настройка
- Docker Swarm vs Kubernetes
📝 Практика
- Инструкция по установке и настройке Kubernetes на Ubuntu
- Подробный гайд для новичков по установке Kubernetes
- Попробовать потыкать Kubernetes на тестовом кластере
- Визуальное руководство по диагностике неисправностей в Kubernetes
- Шеринг GPU в Kubernetes с помощью MIG и TimeSlicing
- Гайд по запуску приложений с высокой доступностью (HA) в Kubernetes
- 10 типичных ошибок при использовании Kubernetes
💼 Кейсы по компаниям из цикла статей на Хабре
- 4200 подов и TessMaster у eBay
- Concur и SAP
- GitHub
- SoundCloud
- Цифровой банк Monzo
- BlaBlaCar
- BlackRock
- Huawei
- ЦЕРН и 210 кластеров K8s