2015-01-22 2 views
69

Kubernetes объявлен как кластер-кластер «планировщик/оркестратор», но я понятия не имею, что это значит. После прочтения сайта Kubernetes и (неопределенной) вики GitHub, я могу сказать, что он каким-то образом определяет, какие виртуальные машины доступны/способны запускать ваш контейнер Docker, а затем развертывает их там. Но это только моя догадка, и я не видел никаких конкретных формулировок в их документации, чтобы поддержать это.Что на самом деле делает Кубернетес?

Так что Kubernetes, точно, и что некоторые конкретные проблемы, которые она решает?

+1

Почему downvote без объяснения: это код/​​программ, связанных, показывает исследование, и не боян. – smeeb

+1

Не спустил вниз, но я думаю, что это несколько «мета-иш» вопрос, и это ответ должен войти в описание тега. – Filburt

+1

Спасибо @Filburt (+1) - однако тег в настоящее время описывается с помощью «* Kubernetes - это реализация управления кластерным кластером с открытым исходным кодом», что не означает ** ничего ** для меня как аутсайдера, смотрящего в:). Кроме того, я ищу реальные, конкретные варианты использования для конкретных проблем, которые Кубернетес может решить.Я не думаю, что все это могло бы войти в описание тега, и если бы это было возможно, я хотел бы пожать руку человеку, который выясняет, как это сделать! – smeeb

ответ

53

Целью Kubernetes является упрощение организации и планирования вашего приложения через парк машин. На высоком уровне это операционная система для вашего кластера.

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

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

+2

Спасибо @brendan (+1) - ваш ответ определенно помогает. Тем не менее, один следующий вопрос: разве это не то, что делает Apache Mesos? Конкуренты Кубернеса и Мезоса друг к другу? Если нет, можно ли их использовать совместно друг с другом (и если да, то как)? Еще раз спасибо! – smeeb

+2

@smeeb Mesos и Kubernetes дополняют друг друга (последний поддерживается как структура Mesos). Mesos обеспечивает более сложное управление ресурсами. Другими словами, Kubernetes позволяет Mesos решить, какой хост используется, исходя из доступной емкости. Mesos поддерживает другие фреймворки. Если вы прочитаете документы, вы увидите, что Marathon - это еще один способ запуска контейнеров в кластере серверов Mesos. –

10

Как вы читаться из Github page:

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

Kubernetes является:

lean: lightweight, simple, accessible 
portable: public, private, hybrid, multi cloud 
extensible: modular, pluggable, hookable, composable 
self-healing: auto-placement, auto-restart, auto-replication 

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

Для меня Kubernetes - инструмент для оркестровки контейнеров от Google. Благодаря своей конструкции вы можете реализовать совместимость с любым движком контейнера, но я думаю, что теперь он ограничен докером. Есть некоторые важные понятия в архитектуре:

Kubernetes работает со следующими понятиями:

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

Поддоны представляют собой колонизированную группу контейнеров-докеров с общими объемами. Это самые маленькие развертываемые блоки, которые могут быть созданы, запланированы, и управляются с помощью Kubernetes. Подготовки могут создаваться индивидуально, но рекомендуется использовать контроллер репликации, даже если создает один контейнер. Подробнее о стручках.

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

Услуги предоставляют единое, стабильное имя и адрес для набора стручков. Они действуют как базовые балансировочные устройства. Подробнее об услугах.

Этикетки используются для организации и выбора групп объектов на основе ключ: пары значений. Подробнее о этикетках.

Итак, у вас есть группа машин, образующих кластер, в котором работают ваши контейнеры.Yo также может определить группу контейнеров, которые предоставляют услугу, аналогично тому, как это делается с другими инструментами, такими как fig (то есть: webapp pod может быть сервером rails и базой данных postgres). У вас также есть другие инструменты для обеспечения нескольких контейнеров/контейнеров обслуживаемой одновременно службы, хранилища значений ключей, своего рода встроенного балансира нагрузки ...

Если вы знаете что-то о ядре, это очень похожее решение, но от Google. Algo Kubernetes имеет хорошую интеграцию с Google Cloud Engine.

+2

Спасибо @jcortejoso (+1) - однако у меня есть несколько последующих вопросов, если вы не возражаете: ** (1) ** вы говорите, что Kubernetes похож на CoreOS, но из Google. Это означает, что Kubernetes и CoreOS решают одну и ту же проблему. Но с сайта [Kubernetes](), он говорит, что вы можете установить Kubernetes ** на ** CoreOS. Так что это?!? Является ли Kubernetes тем же самым, что и CoreOS, или Kubernetes работает на CoreOS и решает конкретную проблему? – smeeb

+0

Также ** (2) ** Я все еще не вижу значения в «оркестровке» Кубернеса. Вы заявляете, что вы можете использовать Kubernetes для определения группы контейнеров, которые предоставляют услугу, что заставляет меня задаваться вопросом о двух разных вещах: (2a) я не мог бы просто сделать этот тип кластеризации на уровне приложения и разместить свое приложение за nginx балансировщик нагрузки? И (2b) это все, что нужно для «оркестровки»? Для меня, опять же, это просто похоже на балансировку нагрузки, которую можно легко достичь на уровне приложения. Мысли? Еще раз спасибо за прекрасный ответ! – smeeb

+0

Извините ссылку в моем первом комментарии выше [должно быть, это] (http://kubernetes.io/gettingstarted/), идите туда и прокрутите вниз, и вы увидите, что вы можете установить Kubernetes поверх CoreOS. – smeeb

2

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

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

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

https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/#why-do-i-need-kubernetes-and-what-can-it-do

Смежные вопросы