Kubernetes Autoscaler, как всегда держать один узел на холостом ходу - PullRequest
0 голосов
/ 02 ноября 2018

В настоящее время я работаю с графическими процессорами, и, поскольку они дорогие, я хочу, чтобы они уменьшались и увеличивались в зависимости от нагрузки. Однако расширение кластера и подготовка узла занимает около 8 минут, так как он устанавливает драйверы и выполняет другую подготовку.

Итак, чтобы решить эту проблему, я хочу позволить одному узлу оставаться в состоянии ожидания и автоматически масштабировать остальные узлы. Есть ли способ сделать это?

Таким образом, когда приходит запрос, его принимает незанятый узел и создается новый незанятый узел.

Спасибо!

1 Ответ

0 голосов
/ 03 ноября 2018

Существует три разных подхода:

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

Вы должны запретить автоматическую продажу одного конкретного узла (назовем его «узел A»). Создайте новый узел и сделайте реплики стручков узла A для этого нового узла. Узел будет работать, пока он не является частью процесса автоматического масштабирования. После завершения процесса автоматического масштабирования и завершения загрузки вы можете безопасно опустошить этот узел.

 a. Create a new node. 
 b. Prevent node A from evicting its pods by adding the annotation "cluster-autoscaler.kubernetes.io/safe-to-evict": "false"
 c. Copy a replica of node A, make replicas of the pods into that new node. 
 d. Once the autoscaler has scaled all the nodes, and the boot time has
    completed, you may safely drain node A, and delete it.

2 - Вы можете запустить Бюджет сбоя Pod .

3 - Если вы хотите заблокировать удаление узла A при уменьшении масштаба, вы можете установить аннотацию"cluster-autoscaler.kubernetes.io/scale-down-disabled": «истина» на одном конкретном узле. Это работает только во время процесса уменьшения.

...