#kubernetes #kubernetes-pod
Вопрос:
У меня есть несколько узлов, которые в основном простаивают, но при планировании модулей/служб появляется ошибка с надписью «Недостаточно процессора».
Вывод использования узла :-
top - 17:59:45 up 17 days, 2:52, 1 user, load average: 5.61, 7.85, 8.58
Tasks: 2030 total, 3 running, 1771 sleeping, 0 stopped, 0 zombie
%Cpu(s): 6.5 us, 2.3 sy, 0.4 ni, 90.4 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
KiB Mem : 39616812 total, 29776403 free, 30507960 used, 67896128 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 35842112 avail Mem
Как видно, вся куча памяти/процессора простаивает (~ 80-90% свободны).
То же самое может быть подтверждено тем фактом :-
$ kubectl top nodes
W0615 14:03:16.457271 108 top_node.go:119] Using json format to get metrics. Next release will switch to protocol-buffers, switch early by passing --use-protocol-buffers flag
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
node1 4680m 29% 14943Mi 47%
node10 9524m 19% 44735Mi 11%
node11 273m 0% 1614Mi 0%
node12 289m 0% 1617Mi 0%
node2 1736m 10% 11683Mi 37%
node3 3223m 20% 17837Mi 56%
node4 1680m 10% 15075Mi 47%
node5 7386m 15% 39163Mi 10%
node6 5392m 22% 26448Mi 20%
node7 2457m 5% 28002Mi 7%
node8 4853m 10% 51863Mi 13%
node9 3620m 7% 18299Mi 4%
Но при планировании модулей появляется ошибка (kubectl описывает имя модуля pod) :-
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 62m default-scheduler 0/12 nodes are available: 5 node(s) had taints that the pod didn't tolerate, 7 Insufficient cpu.
Причина, по которой я понимаю, почему это происходит (kubectl описывает узел node10) :-
Allocated resources:
(Total limits may be over 100 percent, i.e., overcommitted.)
Resource Requests Limits
-------- -------- ------
cpu 47887m (99%) 92270m (192%)
memory 59753371Ki (15%) 87218649344 (21%)
ephemeral-storage 2Gi (0%) 2Gi (0%)
hugepages-1Gi 0 (0%) 0 (0%)
hugepages-2Mi 0 (0%) 0 (0%)
Модули распределили все ресурсы процессора по всем узлам
Несмотря на то, что фактическое использование очень низкое, k8s считает, что узлы полностью заняты. То, чего я пытаюсь достичь, — это как переоценивать ресурсы ? Я попытался отредактировать «Выделяемый» процессор в 2 раза больше «Емкости», но изменения не сохраняются. Есть какие-нибудь предложения, как я могу переусердствовать ?
Комментарии:
1. Ознакомьтесь с запросами/ограничениями на ресурсы pod. Планировщик использует запросы и ограничения, а не фактическое использование ресурсов.
2. можете ли вы добавить вывод
kubectl get pod <podname> -o yaml
Ответ №1:
Вы не можете переоценивать запросы, так как они формируют минимальные необходимые ресурсы для запуска данного модуля. Вы можете превысить лимиты, как вы можете видеть по своему 192%
там.
Комментарии:
1. Итак, если я правильно понимаю, единственный способ разместить больше модулей / сделать узел более полезным-это сделать так, чтобы модули имели меньшие запросы (независимо от ограничений), или вообще удалить ЗАПРОС, чтобы иметь неограниченный доступ к процессору, или очистить устаревшие модули/службы ?
2. Технически уверен? Запрос памяти и процессора на модуль должен быть минимальным, необходимым для нормального функционирования. Если они установлены неправильно, то да, вам следует их обновить. Но если они установлены правильно, то вам нужно больше оборудования 🙂
3. Большое спасибо, ребята, в настоящее время мы вообще не будем настраивать запрос и будем настраивать оповещения nagios для мониторинга активности узла. Еще раз спасибо
4. Это нецелесообразно. Вы должны установить их по крайней мере на минимальные разумные значения.