Что на самом деле делает Kubernetes? [закрыто]


134

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

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


Учитывая, что все проекты docker-world (kubernetes / fleet / swarm / и т. Д.) Испытывают трудности с объяснением того, что они делают и что их отличает, я думаю, что несколько невнятный вопрос - это все, что мы можем предоставить пользователям ... спрашивает «в чем разница между флотом и кубернетами», и отвечает: «вы можете использовать флот для запуска кубернетов». Облом. ;-)
Торстен Бронгер

3
Я думаю, что это совершенно правильный вопрос и указывает на некоторые недостатки в документе. Закрыть его как слишком широкий - плохая услуга. Лучшим подходом для меня было просто загрузить кодовую базу k8s и заглянуть туда, например, чтобы узнать, что такое pod. Это мне очень помогло.
Beezer

Ответы:


113

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

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

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


3
Спасибо @brendan (+1) - ваш ответ определенно помогает. Но есть еще один вопрос: разве это не то, что делает Apache Mesos? Являются ли Kubernetes и Mesos конкурентами друг другу? Если нет, можно ли их использовать совместно (и если да, то как)? Еще раз спасибо!
smeeb

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

18

Как вы читаете со страницы 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. Модули можно создавать индивидуально, но рекомендуется использовать контроллер репликации даже при создании одного модуля. Подробнее о стручках.

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

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

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

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

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


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

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

1
Если kubernetes «легкий», мне интересно, какой будет жирный раствор.
Торстен Бронгер

@smeeb Я не так хорошо знаком с nginx (простите за мою наивность), но я не думаю, что nginx перезапустит сервер, который потерпел крах; и если машина (или весь дата-центр) выйдет из строя, nginx не перезапустит ваше приложение на другом компьютере. kubernetes позаботится о том, чтобы вы всегда где-то работали n «подов», и не имеет значения, где и как.
kgreenek

10

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.