Разверните Pod на холостом ходу и только на одном выделенном узле - PullRequest
0 голосов
/ 02 июня 2019

У меня есть кластер K8S с 20 узлами на AWS. Мне нужно создать конвейеры таким образом, чтобы новый Pod был развернут только на одном выделенном узле, и как только его выполнение достигло определенной стадии, он будет удален с этого узла, что делает его бездействующим, так что другой выделенный узел может быть развернут на этом узле.

Я попытался использовать nodeName, что нормально, но нам нужно сделать автоматическое планирование. В методе nodeName мне нужно было проверить, не занят ли какой-либо узел, и развернуть его там. Кроме того, мне нужно проверить, выполнено ли выполнение для каждого узла, и удалить модули, если оно выполнено. Это также делается вручную. Есть ли способ автоматизировать это?

1 Ответ

0 голосов
/ 03 июня 2019

Я почти уверен, что кластер-автоскалер сделает то, что вы описываете.Вы хотите создать группу автоматического масштабирования с двумя Tag s:

  • k8s.io/cluster-autoscaler/node-template/taint/my-special-key и значением whatever:NoSchedule
  • k8s.io/cluster-autoscaler/node-template/label/my-special-label и значением whatever-you-want (или даже пустое значение)

затем, когда вы создаете Pod, поместите его requests: с точным размером memory: и cpu:, чтобы соответствовать Узлу, включите nodeSelector из my-special-label: whatever-you-want (или "") и допуск на порчу

Затем кластер-автоскалер создаст новый узел, поскольку он знает об ограничении метки и порчи, и удалитУзел через 10 минут (который, я уверен, настраивается), если Pod не использует его.

Никакой другой Pod не вызовет это событие масштабирования, и никакие другие Pod не будут запланированы на Node

...