Логически отдельные развертывания Azure Kubernetes

У меня есть кластер Kubernetes, созданный и развернутый с помощью app.

Во-первых, если я развернул с firstapp.yaml, который создал модуль и службу для внешнего доступа к модулю.

Если у меня есть два узла в кластере, а затем я выполняю другое развертывание с помощью secondapp.yaml.

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

Это что-то, что предоставляется кубернетами. Как он будет управлять развертываниями, выполненными с использованием разных файлов? они всегда будут работать на отдельных узлах (если есть подготовленные узлы)?

Если нет, то какой практики следует придерживаться, если я хочу логическое разделение между двумя узлами, которые я хочу вести как две среды, скажем, среда dev и qa.


person Mandar Jogalekar    schedule 18.04.2019    source источник


Ответы (2)


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

Что касается вашего последнего вопроса - в нем нет смысла. Вы можете использовать пространства имен \ сетевые политики для разделения сред, вам все равно, на каком узле (ах) находятся ваши поды. В этом весь смысл кластера.

Вы можете использовать ограничения размещения, чтобы добиться того, о чем просите, но это вообще не имеет смысла.

https://kubernetes.io/docs/concepts/configuration/assign-pod-node/

person 4c74356b41    schedule 18.04.2019
comment
как помогают пространства имен? - person Mandar Jogalekar; 18.04.2019

Согласен с @ 4c74356b41. В качестве дополнения. Неважно, где находятся ваши модули, у вас может быть несколько реплик вашего приложения, разделенных, скажем, между 50 узлами, они все равно могут взаимодействовать друг с другом (службы, обнаружение служб, network CNI) и обмениваться ресурсами и т. д.

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

Опять же, как упоминает @ 4c74356b41, если вы хотите разделить свой кластер на несколько сред, скажем, для разных команд или, как вы упомянули, для сред разработки и qa, вы можете использовать пространства имен для этого. Они в основном создают меньшие кластеры в вашем кластере (обратите внимание, что это скорее логическое разделение, а не разделение с точки зрения безопасности, пока вы не добавите другие компоненты, такие как, например, роли). Вы можете просто добавить поле namespace в YAML вашего развертывания, чтобы укажите, в каком пространстве имен вы хотите развернуть свои поды - все равно не имеет значения, на каких узлах они находятся. В зависимости от вашего варианта использования.

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

person aurelius    schedule 19.04.2019