Kubernetes - инициирует восстановление баланса стручков
У меня есть кластер kubernetes с несколькими настроенными узлами. Я хочу убедиться, что стручки эффективно распределены по узлам.
Я объясню:
Давайте предположим, что у меня есть два узла:
Node 1 - 2gb ram
Node 2 - 2gb ram
И у меня есть эти стручки:
Pod 1 - 1gb ram on Node 1
Pod 2 - 100mb ram on Node 1
Pod 3 - 1gb ram on Node 2
Pod 4 - 100mb ram on Node 2
Хорошо, теперь проблема: допустим, я хочу добавить модуль с 1 ГБ оперативной памяти в кластер. В настоящее время нет места ни в одном узле, поэтому kubernetes не сделает этого (если я не добавлю другой узел). Интересно, есть ли способ, которым kubernetes увидит, что он может переместить Pod 3 в узел 1, чтобы освободить место для нового pod?
Помогите
1 ответ
Проект инкубатора Descheduler в Kubernetes в конечном итоге будет интегрирован в Kubernetes для обеспечения возможности восстановления баланса. Это может быть вызвано недостаточным / чрезмерным использованием ресурсов узла, как предполагает ваш случай, или по другим причинам, например изменениям в узлах или сходствах.
В вашем случае вы можете запустить descheduler с LowNodeUtilization
стратегия и тщательно настроенные пороги, чтобы некоторые стручки были выселены и добавлены обратно в очередь стручков после нового стручка 1 ГБ.
Другой метод может использовать классы приоритета для модуля pod, чтобы вызвать удаление модуля pod с более низким приоритетом и освободить место для нового входящего задания объемом 1 ГБ. Приоритеты модуля включены по умолчанию, начиная с версии 1.11. Приоритеты не должны быть механизмом перебалансировки, но я упоминаю об этом, потому что это жизнеспособное решение для обеспечения возможности планирования входящего модуля с более высоким приоритетом. Приоритеты устарели старого перепланировщика, который будет удален в 1.12.
Изменить - включить образец политики
Политика, которую я использовал для проверки этого ниже:
apiVersion: "descheduler/v1alpha1"
kind: "DeschedulerPolicy"
strategies:
"LowNodeUtilization":
enabled: true
params:
nodeResourceUtilizationThresholds:
thresholds:
"memory": 50
targetThresholds:
"memory": 51
"pods": 0