Что делает Кубернетес на самом деле?

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

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

Ответ 1

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

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

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

Ответ 2

Как вы читаете со страницы Github:

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. Благодаря своей конструкции вы можете реализовать совместимость с любым контейнерным движком, но я думаю, что теперь он ограничен Docker. В его архитектуре есть несколько важных понятий:

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

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

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

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

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

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

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

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

Ответ 3

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

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

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

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