Перейти к основному содержимому

Kubernetes: Краткое описание и подборка материалов

Сначала рекомендуем изучить пост про Docker тут.

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

Kubernetes активно используется в микросервисной архитектуре, так как он предоставляет необходимые абстракции и механизмы для оркестровки контейнеров, в которых развёртываются микросервисы.

Основные понятия

  • Узел (node) – физическая или виртуальная машина, на которой запускаются поды.
  • Под (pod) – группа контейнеров с общими разделами, запускаемых как единое целое. Минимальная единица развёртывания в Kubernetes.
  • Сервис (service) – абстракция, которая определяет политику доступа к подам. Сервис балансирует трафик между подами и предоставляет единую точку входа для клиентов.
  • Replication Controllers – контроллер, который гарантирует, что определенное количество реплик (копий) пода будут запущены в любой момент времени.
  • Раздел (Volume) – директория, которая доступна в контейнере.
  • Лейблы (Labels) – пары ключ-значение которые прикрепляются к объектам, например, к подам.

Главные функции K8s

  1. Централизованное управление (оркестровка) контейнерами. Kubernetes автоматически управляет жизненным циклом контейнеров от развёртывания до откатов обновлений.
  2. Распределение нагрузки и масштабирование кластера. Kubernetes распределяет контейнеры по узлам так, чтобы они не тратили лишние ресурсы. Если нагрузка на систему растёт, Kubernetes может автоматически добавлять контейнеры и узлы.
  3. Управление конфигурациями. В 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

🌐 Официальная документация

🔹 Наши посты

  1. Про Docker
  2. Виртуализация, контейнеризация и оркестрация

🗒 Статьи (теория)

  1. Кратко о Kubernetes
  2. Kubernetes — основные понятия
  3. Про возможности Kubernetes в сравнении с Docker
  4. Подробнее про компоненты Kubernetes
  5. Внутреннее устройство Kubernetes-кластера простым языком
  6. Kubernetes: большой обзор технологии, установка и настройка
  7. Docker Swarm vs Kubernetes

📝 Практика

  1. Инструкция по установке и настройке Kubernetes на Ubuntu
  2. Подробный гайд для новичков по установке Kubernetes
  3. Попробовать потыкать Kubernetes на тестовом кластере
  4. Визуальное руководство по диагностике неисправностей в Kubernetes
  5. Шеринг GPU в Kubernetes с помощью MIG и TimeSlicing
  6. Гайд по запуску приложений с высокой доступностью (HA) в Kubernetes
  7. 10 типичных ошибок при использовании Kubernetes

💼 Кейсы по компаниям из цикла статей на Хабре

  1. 4200 подов и TessMaster у eBay
  2. Concur и SAP
  3. GitHub
  4. SoundCloud
  5. Цифровой банк Monzo
  6. BlaBlaCar
  7. BlackRock
  8. Huawei
  9. ЦЕРН и 210 кластеров K8s
  10. Reddit

⏯ Видео

  1. Курс по Kubernetes с нуля
  2. Что такое Kubernetes за 9 минут
  3. 49 видеоуроков по Kubernetes
  4. Открытая вечерняя школа. Kubernetes для разработчиков
  5. Практика по Kubernetes — серия уроков