Почему безсерверные платформы с открытым исходным кодом (например, OpenWhisk) нуждаются в оркестраторе (например, Kubernetes)
В настоящее время я работаю над частным облаком, таким как AWS, и использую AWS lambda для безсерверных. Это очень круто, как фреймворк, поэтому я провел несколько исследований, чтобы найти альтернативы с открытым исходным кодом. Я вышел с некоторыми именами: OpenWhisk, OpenFaas. Эти структуры используют Docker для контроля контейнеров, в которых выполняется код. Я новичок в этих технологиях, поэтому я все еще запутался в некоторых аспектах.
Вот моя точка зрения: я не понимаю, нужно ли использовать эти фреймворки с таким оркестром, как Кубернетес. Если да, как это работает с оркестром?
Если у вас есть какая-то информация, ссылки или документация, это будет здорово!
Большое спасибо.
2 ответа
Kubernetes - это хорошо известный инструмент оркестровки контейнеров, который можно использовать для развертывания собственных приложений контейнера. Развертывание OpenWhisk через Kubernetes может использовать возможности, предоставляемые Kubernetes, для лучшего контроля и управления контейнерами OpenWhisk, что может привести к стабильной среде выполнения OpenWhisk.
Создание приложения без сервера с множеством функций и управление им сложнее, чем простое приложение Kubernetes с одним контейнером. На самом деле, может быть проще использовать Kubernetes для более сложных приложений, потому что платформа более зрелая.
Auto-scalability inheritance
Одной из замечательных возможностей Serverless является встроенная автоматическая масштабируемость функций, поскольку, будучи разработчиком, вам не нужно ничего делать, чтобы использовать эту функциональность. С Kubernetes вы также можете использовать автоматическое масштабирование ваших модулей и даже узлов, но это требует некоторой настройки и немного медленнее, поскольку этот процесс запускается только при применении определенных правил.
OpenWhisk фактически обходит k8s, чтобы запланировать контейнеры, которые выполняют пользовательские функции (известные как действия в OpenWhisk). Контейнеры функций полностью управляются Invokers, которые являются оркестраторами OpenWhisk, специально созданными для обработки функций.
Компоненты системы OpenWhisk управляются Kubernetes. Но сам Kubernetes, как правило, слишком медленный для контейнеров с недолговечными функциями, и его запуск может занять много секунд. Это не запуск для функций, которые могут выполняться в течение миллисекунд. Кубе не был предназначен для производства через десятки тысяч контейнеров с высокой скоростью.
Возможно, вы также захотите взглянуть на Knative, который является относительно новым, но очень тесно связан с Kubernetes.
Вот 3 статьи, которые могут быть информативными для вас:
Что делают Invokers в OpenWhisk: https://link.medium.com/MrhGj6RVrV и https://link.medium.com/pifBTkQVrV
Бессерверный контракт предоставляет некоторый контекст для понимания влияния производительности базовой платформы на пользовательские функции: https://link.medium.com/2EMzs0FVrV
Наконец, стоит отметить, что OpenWhisk может быть развернут на baremetal и виртуальных машинах, а также в Mesos DC/OS или Docker Compose, что дает вам множество вариантов для пользовательских развертываний.