Kubernetes - возможно ли развертывание контейнеров без сервера - PullRequest
0 голосов
/ 15 февраля 2019

При разработке приложения у меня есть два ограничения

  1. Мне нужно использовать микросервисную архитектуру
  2. Мне нужно развернуть, используя Kubernetes

Я думалдля развертывания в Serverless, потому что масштабируемость и доступность являются основным приводом для моего приложения.Насколько я знаю, когда я использую развертывание без сервера, обычно мне нужно приобретать «Функции как сервис» (FaaS) у поставщиков услуг, и нет никакого способа управлять внутренними компонентами развертывания.Интересно, смогу ли я использовать Kubernetes для управления развертыванием, даже когда я развертываю без сервера.

Я новичок в этой области.Пожалуйста, дайте мне руководство, если я пропускаю какую-либо часть.

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Отказ от ответственности: я работаю над этим проектом

Вы смотрели на Knative здесь

Безсерверность на k8s - это почти то, что делает Knative.Он расширяет Kubernetes через CRD и предоставляет более удобный для разработчиков приложений / сервисов интерфейс с автоматическим масштабированием, управлением конфигурацией / маршрутами и растущим списком источников событий.Взгляните

0 голосов
/ 15 февраля 2019

Оба понятия разные, и вам нужно знать о нескольких вещах

Kubernetes

Kubernetes - это оркестровщик контейнеров, то есть вы можете управлять своими контейнерами в больших масштабах, и этоне ограничиваясь развертыванием, откатом, балансировкой нагрузки и т. д. Используя Kubernetes, вы ограничены кластерными (работающие виртуальные машины / узлы).Скажем, у вас есть 10 узлов, тогда Kubernetes будет управлять всеми вашими контейнерами в кластере.Вы можете масштабировать узлы в соответствии с вашими требованиями, и Kubenertes будет управлять этими узлами.Это самый известный и известный подход к микросервисам.

Без сервера - функционирует как услуга

Это относительно новая концепция, и создание микросервисов исключительно на ее основе не рекомендуется.Есть много ограничений вокруг этого.Функция как услуга (без сервера) обычно используется для дополнения архитектуры микросервисов.Предполагается, что функции основаны на задачах, например, отправка электронной почты, файл процесса, где вам не нужны постоянно запущенные и работающие сервисы.

Без сервера и Kubernetes

Если вы хотите создать свою собственную функцию без сервера в вашей собственной среде, тогда другой концепцией является использование Open FaaS framework.Вы должны использовать Kubernetes в качестве среды выполнения ваших функций.Этот подход очень отличается и очень сложен, вам это может не понадобиться.

Скейлинг и Кубернетес

Серебряной пули нет и есть компромиссы.Kubernetes - лучший выбор для микросервисов, и для управления большим трафиком или скачками необходимо поддерживать узлы кластера таким образом, чтобы справляться с вашей нагрузкой.Это также зависит от вашего поставщика облачных услуг.например, Micorosft Azure недавно взломал виртуальный кублет.Короче говоря, когда вы изначально определяете свой кластер (скажем, 5 узлов), и в любой момент ваша система получает всплеск, виртуальные узлы (экземпляр контейнера Azure) создаются для этого конкретного момента, а когда когда трафик возвращается к нормальному состоянию, то этот виртуальный узел уходитпрочь, и вы вернетесь к своим обычным узлам кластера (в данном случае 5).

Опять вам нужно получить доступ к тому, чего вы пытаетесь достичь, и спроектировать свое решение.

Надеюсь, это поможет!

Редактирование на основе других ответов

Существует разница между серверной инфраструктурой и выполнением вашего кода (FaaS) в безсерверной среде.

FaaS

Когда речь заходит о FaaS (функция как служба), вы абстрагируетесь от сервера и можете запускать свой код в режиме без сервера.Теперь вы можете размещать свои функции у разных облачных провайдеров, таких как AWS, Azure и т. Д. В этом случае вам не нужно беспокоиться о каком-либо сервере под ним, а выбросы управляются облачным провайдером.Однако, если вы хотите работать без серверов в Kubernetes (управляемых вами), вы будете делать это с помощью функций времени выполнения (FaaS).Вам не нужно беспокоиться о времени выполнения или фреймворке, просто упаковывайте код и запускайте его, но вы все равно привязаны к пределу узлов, поэтому для управления шипами нужно управлять узлами kubernetes.

Kubernetes Serverless как инфраструктура

Это фактически серверная инфраструктура Kubernetes, где ваш кластер Kubernetes расширяется путем подключения виртуальных узлов к вашему кластеру.Теперь, если у вас скачок или неожиданный трафик, вам не нужно беспокоиться о своих узлах.Ваши kubernetes достаточно интеллектуальны, чтобы расширить трафик на виртуальные узлы, пока не всплески и не сжимаются обратно.В этой инфраструктуре вы можете запускать полностью управляемые приложения или FaaS.Виртуальный проект Kublet разрабатывается Microsoft и AWS для решения такого сценария, когда вы фактически получаете безсерверные узлы, используя Kubernetes.

Таким образом, где бы вы ни отвечали за управление узлами, это практически не безсерверно с точки зрения инфраструктуры.Но в то же время вы можете использовать эти узлы для запуска собственной среды выполнения FaaS на этих узлах для запуска нескольких экземпляров различных функций.Следующее 6-минутное видео поможет вам лучше понять разницу, которую я могу объяснить.

https://www.youtube.com/watch?v=_GOuP9Q3BqE&list=LLxfaEBq0Fa7eiKokf98ojxA&index=5&t=0s

...