Как коммитер CloudFoundry (в прошлом) и Kubernetes (в настоящее время), я, вероятно, обладаю уникальной квалификацией, чтобы ответить на этот вопрос.
PaaS-подобный
Мне нравится называть CloudFoundry «Application PaaS», а Kubernetes - «Container PaaS», но различие довольно тонкое и плавное, учитывая, что оба проекта со временем меняются, чтобы конкурировать на одних и тех же рынках.
Различие между ними в том, что CF имеет промежуточный уровень, который принимает (12-факторное) пользовательское приложение (например, jar или gem) и пакет сборки в стиле Heroku (например, Java + Tomcat или Ruby) и создает каплю (аналогично Образ Docker). CF не предоставляет пользователю интерфейс контейнеризации, в отличие от Kubernetes.
Зрительская аудитория
Основная аудитория CloudFoundry - это разработчики корпоративных приложений, которые хотят развертывать 12-факторные приложения без сохранения состояния с использованием пакетов сборки в стиле Heroku.
Аудитория Kubernetes немного шире, включая разработчиков приложений без сохранения состояния и разработчиков служб с отслеживанием состояния, которые предоставляют свои собственные контейнеры.
Это различие может измениться в будущем:
Сравнение характеристик
По мере развития и конкуренции обоих проектов их сходства и различия будут меняться. Так что возьмите следующее сравнение характеристик с недоверием.
И CF, и K8 имеют много схожих функций, таких как контейнеризация, пространство имен, аутентификация,
Конкурентные преимущества Kubernetes:
- Группируйте и масштабируйте поды контейнеров, которые используют общий сетевой стек, а не просто масштабируются независимо
- Принеси свой контейнер
- Слой сохраняемости с сохранением состояния
- Более широкое и активное сообщество OSS
- Более расширяемая архитектура с заменяемыми компонентами и сторонними плагинами
- Бесплатный веб-интерфейс
Конкурентные преимущества CloudFoundry:
- Зрелая аутентификация, группировка пользователей и поддержка мультитенантности [x]
- Принесите собственное приложение
- Включенный балансировщик нагрузки
- Развертывается, масштабируется и поддерживается BOSH [x]
- Надежное ведение журнала и агрегирование показателей [x]
- Корпоративный веб-интерфейс [x]
[x] Эти функции не являются частью Diego и не включены в Lattice.
Развертывание
Одним из конкурентных преимуществ CloudFoundry является наличие развитого механизма развертывания BOSH, который обеспечивает такие функции, как масштабирование, восстановление и мониторинг основных компонентов CF. BOSH также поддерживает множество уровней IaaS с подключаемой абстракцией облачного провайдера. К сожалению, обучение и управление конфигурацией развертывания BOSH просто кошмарны. (Как коммиттер BOSH, думаю, я могу сказать это с точностью.)
Абстракция развертывания Kubernetes все еще находится в зачаточном состоянии. В основном репозитории доступно несколько целевых сред, но не все они работают, хорошо протестированы или поддерживаются основными разработчиками. В основном это вопрос зрелости. Можно было ожидать, что со временем это улучшится и увеличится абстракция. Например, Kubernetes в DCOS позволяет развернуть Kubernetes в существующем кластере DCOS с помощью одной команды.
Исторический контекст
Диего - это переработанная версия программы CF's Droplet Execution Agent. Первоначально он был разработан до того, как был анонсирован Kubernetes, и по мере развития конкурентной среды приобрел больше возможностей. Первоначальной целью было создание дроплетов (пользовательское приложение + пакет сборки CF) и запуск их в контейнерах Warden (переименованных в Garden при переписывании в Go). С момента своего создания он также был переупакован как Lattice , который является чем-то вроде CloudFoundry-lite (хотя это имя было взято в существующем проекте.). По этой причине Lattice в некоторой степени похож на игрушку, поскольку он намеренно сократил пользовательскую аудиторию и объем, явно упустив функции, которые сделали бы ее «готовой для предприятий». Функции, которые уже предоставляет CF. Отчасти это связано с тем, что Lattice используется для тестирования основных компонентов без некоторых накладных расходов из-за более сложного CF, но вы также можете использовать Lattice во внутренних средах с высоким уровнем доверия, где безопасность и многопользовательская среда не так важны. .
Также стоит упомянуть, что CloudFoundry и Warden (его контейнерный движок) на пару лет предшествовали Docker.
С другой стороны, Kubernetes - это относительно новый проект, разработанный Google на основе многолетнего использования контейнеров с BORG и Omega. Kubernetes можно рассматривать как оркестровку контейнеров 3-го поколения в Google, точно так же, как Диего представляет собой оркестровку контейнеров 3-го поколения в Pivotal / VMware (v1 написано в VMware; v2 в VMware с помощью Pivotal Labs; v3 в Pivotal после того, как он возглавил проект) .