Что делает Кубернетес на самом деле?
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