Что такое Kubernetes | DATAENGINER

Что такое Kubernetes

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

Название Kubernetes происходит от греческого, что означает рулевой или летчик. В 2014 году Google открыл проект Kubernetes с открытым исходным кодом. Kubernetes опирается на полутора десятилетие опыта, накопленного компанией Google в области масштабирования производственных рабочих нагрузок , в сочетании с лучшими в своем классе идеями и практиками сообщества.

Немного Истории

Давайте посмотрим, почему Kubernetes так полезен.

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

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

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

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

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

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

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

Зачем тебе Kubernetes и что он может сделать

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

Вот как Kubernetes приходит на помощь! Kubernetes предоставляет вам платформу для гибкой работы распределенных систем. Он заботится о ваших требованиях к масштабированию, отработке отказа, шаблонах развертывания и многом другом. Например, Kubernetes может легко управлять канарским развертыванием для вашей системы.

Kubernetes предоставляет вам:

  • Обнаружение службы и балансировка нагрузки
    Kubernetes может предоставить контейнер, используя DNS-имя или собственный IP-адрес. Если трафик в контейнер высокий, Kubernetes может сбалансировать нагрузку и распределить сетевой трафик, чтобы развертывание было стабильным.
  • Оркестровка хранилища
    Kubernetes позволяет вам автоматически смонтировать систему хранения по вашему выбору, такую ​​как локальные хранилища, провайдеры общедоступных облаков и многое другое.
  • Автоматическое развертывание и откат
    Вы можете описать желаемое состояние для ваших развернутых контейнеров, используя Kubernetes, и это может изменить фактическое состояние до желаемого состояния с контролируемой скоростью. Например, вы можете автоматизировать Kubernetes для создания новых контейнеров для вашего развертывания, удаления существующих контейнеров и принятия всех их ресурсов в новый контейнер.
  • Автоматическая упаковка в контейнеры
    Kubernetes позволяет указать, сколько ЦП и памяти (ОЗУ) требуется каждому контейнеру. Когда для контейнеров заданы запросы ресурсов, Kubernetes может принимать более обоснованные решения по управлению ресурсами для контейнеров.
  • Самовосстанавливающийся
    Kubernetes перезапускает контейнеры, которые выходят из строя, заменяет контейнеры, убивает контейнеры, которые не отвечают на вашу пользовательскую проверку работоспособности, и не объявляет их клиентам, пока они не будут готовы к обслуживанию.
  • Управление
    секретом и конфигурацией Kubernetes позволяет хранить и управлять конфиденциальной информацией, такой как пароли, токены OAuth и ключи ssh. Вы можете развертывать и обновлять секреты и конфигурацию приложения, не перестраивая образы контейнеров и не раскрывая секреты в конфигурации стека.

Чем Kubernetes не является

Kubernetes — это не традиционная комплексная система PaaS (платформа как услуга). Поскольку Kubernetes работает на уровне контейнеров, а не на уровне оборудования, он предоставляет некоторые общеприменимые функции, общие для предложений PaaS, такие как развертывание, масштабирование, балансировка нагрузки, ведение журналов и мониторинг. Тем не менее, Kubernetes не является монолитным, и эти решения по умолчанию являются дополнительными и подключаемыми. Kubernetes предоставляет строительные блоки для построения платформ разработчиков, но сохраняет выбор пользователя и гибкость там, где это важно.

Kubernetes:

  • Не ограничивает типы поддерживаемых приложений. Kubernetes стремится поддерживать чрезвычайно разнообразные рабочие нагрузки, включая рабочие нагрузки без сохранения состояния, состояния и обработки данных. Если приложение может работать в контейнере, оно должно отлично работать в Kubernetes.
  • Не развертывает исходный код и не создает ваше приложение. Рабочие процессы непрерывной интеграции, доставки и развертывания (CI / CD) определяются культурой и предпочтениями организации, а также техническими требованиями.
  • Не предоставляет сервисы уровня приложения, такие как промежуточное программное обеспечение (например, шины сообщений), платформы обработки данных (например, Spark), базы данных (например, mysql), кэши или кластерные системы хранения (например, Ceph). как встроенные сервисы. Такие компоненты могут работать в Kubernetes и / или могут быть доступны для приложений, работающих в Kubernetes, через переносные механизмы, такие как Open Service Broker.
  • Не требует ведения журнала, мониторинга или оповещения. Он обеспечивает некоторые интеграции в качестве доказательства концепции и механизмы для сбора и экспорта метрик.
  • Не предоставляет и не требует настройки языка / системы (например, jsonnet). Он предоставляет декларативный API, который может быть нацелен на произвольные формы декларативных спецификаций.
  • Не предоставляет и не принимает никаких комплексных систем конфигурации, технического обслуживания, управления или самовосстановления.
  • Кроме того, Kubernetes — это не просто система оркестровки. Фактически это устраняет необходимость в оркестровке. Техническое определение оркестровки — это выполнение определенного рабочего процесса: сначала делайте A, затем B, затем C. В отличие от этого, Kubernetes содержит набор независимых, составляемых процессов управления, которые непрерывно приводят текущее состояние к предоставленному желаемому состоянию. Неважно, как добраться от А до С. Централизованное управление также не требуется. В результате получается система, которая более проста в использовании и является более мощной, надежной, устойчивой и расширяемой

Постоянный редактор и автор сайта

Leave a reply:

Your email address will not be published.