Эволюция развертывания приложений

Посмотрим, почему Kubernetes так полезен, взглянув назад во времени.

Традиционная эпоха развертывания. В начале организации запускали приложения на физических серверах. Не было никакого способа определить границы ресурсов для приложений на физическом сервере, и это вызвало проблемы с распределением ресурсов. Например, если несколько приложений выполняются на физическом сервере, могут быть случаи, когда одно приложение будет занимать большую часть ресурсов, и в результате другие приложения будут работать хуже. Решением для этого было бы запустить каждое приложение на другом физическом сервере. Но это не масштабировалось, поскольку ресурсы использовались недостаточно, и организациям было дорого поддерживать множество физических серверов.

Эра виртуального развертывания. В качестве решения была внедрена виртуализация. Она позволяет вам запускать несколько виртуальных машин (VM) на одном физическом сервере. Виртуализация позволяет изолировать приложения между виртуальными машинами и обеспечивает уровень безопасности, поскольку информация одного приложения не может быть свободно доступна другому приложению.

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

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

Эпоха развертывания контейнеров. Контейнеры похожи на виртуальные машины, но они обладают смягченными свойствами изоляции для совместного использования операционной системы (ОС) между приложениями. Поэтому контейнеры считаются легкими. Подобно виртуальной машине, контейнер имеет свою собственную файловую систему, процессор, память, пространство процесса и многое другое. Поскольку они не связаны с базовой инфраструктурой, они переносимы между облаками и дистрибутивами ОС.

Контейнеры становятся популярными, потому что они имеют много преимуществ. Некоторые из преимуществ контейнера перечислены ниже:

  • Гибкое создание и развертывание приложений: повышенная простота и эффективность создания образа контейнера по сравнению с использованием образа виртуальной машины.
  • Непрерывная разработка, интеграция и развертывание: обеспечивает надежную и частую сборку и развертывание образа контейнера с быстрым и простым откатом (благодаря неизменности образа).
  • Разделение задач между Dev и Ops: создавайте образы контейнеров приложений во время сборки/релиза, а не во время развертывания, тем самым отделяя приложения от инфраструктуры.
  • Наблюдаемость охватывает не только информацию и метрики на уровне ОС, но также информацию о работоспособности приложений и другие сигналы.
  • Согласованность окружающей среды при разработке, тестировании и производстве: на ноутбуке работает так же, как и в облаке.
  • Переносимость облачных и операционных систем: работает на Ubuntu, RHEL, CoreOS, on-prem, Google Kubernetes Engine и в любом другом месте.
  • Управление, ориентированное на приложения: повышает уровень абстракции от запуска ОС на виртуальном оборудовании до запуска приложения в ОС с использованием логических ресурсов.
  • Слабосвязанные, распределенные, гибкие, выделенные микросервисы: приложения разбиты на более мелкие независимые части, которые можно динамически развертывать и управлять ими, а не монолитным стеком, работающим на одной большой специализированной машине.
  • Изоляция ресурса: предсказуемая производительность приложения.
  • Использование ресурсов: высокая эффективность и плотность.

Комментарии

Популярные сообщения из этого блога

Контроллеры в Kubernetes: DaemonSet

Контроллеры в Kubernetes: ReplicaSet

Контроллеры в Kubernetes: StatefulSet