it-swarm.com.ru

Что на самом деле делает Kubernetes?

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

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

114
smeeb

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

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

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

90
brendan

Как вы читаете из его Github page :

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.

14
Javier Cortejoso

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

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

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

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

7
briangrant