#node.js #kubernetes #autoscaling
#node.js #kubernetes #автоматическое масштабирование
Вопрос:
Node.js внедрил кластерный модуль для масштабирования приложений с целью оптимизации производительности. У нас есть Kubernetes, делающий то же самое.
Я в замешательстве, если оба служат одной и той же цели? Мое предположение заключается в том, что кластеризация может порождать максимум 8 процессов (при наличии 4 ядер процессора с 2 потоками в каждом), и в Kubernetes такого ограничения нет.
Ответ №1:
Kubernetes и Node.js Кластерный модуль работает на разных уровнях.
Kubernetes отвечает за организацию контейнеров (среди многих других вещей). С его точки зрения, существуют ресурсы, которые необходимо выделить, и развертывания, которые требуют или используют определенное количество ресурсов.
Node.js Кластерный модуль ведет себя как балансировщик нагрузки, который разветвляется N раз и распределяет запросы между различными процессами, которыми он владеет, и все это в пределах, определенных его средой (CPU, RAM, сеть и т.д.).
На практике Kubernetes имеет возможность создавать дополнительные Node.js контейнеры (масштабирование по горизонтали). С другой стороны, Node.js может расти только в пределах своей среды (масштабирование по вертикали). Вы можете прочитать об этом здесь .
Хотя с точки зрения производительности оба подхода могут быть относительно схожими (в обоих случаях вы можете использовать одинаковое количество ядер); проблема с вертикальным масштабированием на одной машине заключается в том, что вы теряете аспект высокой доступности, который предоставляет Kubernetes. С другой стороны, если вы решите развернуть несколько Node.js контейнеры на разных машинах, вы гораздо более терпимы к тому дню, когда одна из них выходит из строя.