Что Kubernetes на самом деле делать? [закрытый]
Kubernetes выставляется как контейнерный кластер "планировщик / оркестратор", но я понятия не имею, что это значит. После прочтения сайта Kubernetes и (неопределенного) GitHub wiki, лучшее, что я могу сказать, это то, что он каким-то образом выясняет, какие виртуальные машины доступны/способны запускать ваш контейнер Docker, а затем развертывает их там. Но это только мое предположение, и я не видел никаких конкретных слов в их документации, чтобы поддержать это.
так что же такое Kubernetes, ровно, а какие конкретные проблемы, которые он решает?
3 ответа:
цель Kubernetes состоит в том, чтобы упростить организацию и планирование вашего приложения через парк машин. На высоком уровне это операционная система для вашего кластера.
в принципе, это позволяет вам не беспокоиться о том, на какой конкретной машине в вашем центре обработки данных работает каждое приложение. Кроме того, он предоставляет общие примитивы для проверки работоспособности и репликации вашего приложения на этих машинах, а также службы для подключения вашего приложения к микрослужбы, чтобы каждый слой в вашем приложении был отделен от других слоев, чтобы вы могли масштабировать/обновлять/поддерживать их независимо.
хотя многие из этих вещей можно сделать на уровне приложений, такие решения, как правило, одноразовые и хрупкие, гораздо лучше иметь разделение проблем, когда система оркестровки беспокоится о том, как запустить ваше приложение, и вы беспокоитесь о коде, который составляет ваше приложение.
Как Вы читаете из его страница Github:
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. Благодаря своей конструкции вы можете реализовать совместимость с любым контейнерным движком, но я думаю, что теперь он ограничен Docker. В его архитектуре есть несколько важных понятий:
Kubernetes работает со следующими понятиями:
кластеры-это вычислительные ресурсы, поверх которых находятся ваши контейнеры построенный. Kubernetes может работать в любом месте! См. руководство по началу работы для инструкция по различным услугам.
модули представляют собой группу контейнеров Docker с общими томами. Это самые маленькие развертываемые единицы, которые могут быть созданы, запланированы, и управляться с Kubernetes. Стручки могут быть созданы индивидуально, но рекомендуется использовать контроллер репликации даже если создание одного модуля. Подробнее о стручках.
контроллеры репликации управляют жизненным циклом модулей. Они убедитесь, что заданное количество модулей выполняется в любой момент времени путем создания или убивая стручки по мере необходимости. Подробнее о контроллерах репликации.
службы предоставляют одно стабильное имя и адрес для набора модулей. Они действуют как основные балансировщики нагрузки. Подробнее об услугах.
метки используются для организации и выбора групп объектов на основе пары ключ-значение. Подробнее о этикетках.
Итак, у вас есть группа машин, которая образует кластер, в котором выполняются контейнеры. Yo также может определить группу контейнеров, которые предоставляют услугу, аналогично тому, как вы делаете с другими инструментами, такими как fig (т. е.: webapp pod может быть сервером rails и базой данных postgres). У вас также есть другие инструменты для обеспечения нескольких контейнеров/модулей службы, работающих одновременно, хранилища ключей и значений, своего рода встроенного балансировщика нагрузки...
Если вы знаете что-то о coreos, это очень похожее решение, но от Google. Kubernetes алго имеет хорошая интеграция с Google Cloud Engine.
Kubernetes предоставляет большую часть той же функциональности, что и инфраструктура в качестве API-интерфейсов службы, но нацелена на динамически запланированные контейнеры, а не виртуальные машины, и как платформа в качестве сервисных систем, но с большей гибкостью, в том числе:
- монтаж систем хранения,
- распространение секретов,
- проверка работоспособности приложения,
- репликация экземпляры приложения,
- горизонтальный автоматическое масштабирование,
- имен и открытий,
- балансировки нагрузки,
- обновления подвижного,
- мониторинг ресурсов,
- доступ к журналу и прием пищи,
- поддержка самоанализа и отладки, и
- идентификация и авторизация.
Если вы уже используете другие механизмы для обнаружения служб, секретного распространения, балансировки нагрузки, мониторинга и т. д. конечно, вы можете продолжать их использовать, но мы стремимся сделайте его легким перейти к Kubernetes от существующих систем IaaS и PaaS путем обеспечивать эту функциональность.