Запросы ЦП / памяти и ограничения на узел
kubectl describe nodes
дает информацию о запросах и лимитах на ресурсы, такие как процессор и память. Тем не менее, конечная точка API api/v1/nodes
не предоставляет эту информацию.
Кроме того, я мог бы также ударить api/v1/pods
конечная точка, чтобы получить эту информацию за модуль, который я могу накапливать по узлам. Но существует ли уже конечная точка API kubernetes, которая предоставляет информацию, относящуюся к запросам процессора и памяти и ограничениям на узел?
1 ответ
Судя по тому, что я нашел в документации, конечной точкой, ответственной за это, является сервер Kubernetes API.
Процессор и память являются типом ресурса. Тип ресурса имеет базовую единицу. ЦП указывается в единицах ядер, а память указывается в единицах байтов.
Процессор и память совместно называются вычислительными ресурсами или просто ресурсами. Вычислительные ресурсы являются измеримыми количествами, которые можно запрашивать, распределять и потреблять. Они отличаются от ресурсов API. Ресурсы API, такие как Pod и Сервисы, являются объектами, которые можно читать и изменять через сервер API Kubernetes.
Идем дальше к тому, что является узлом:
В отличие от модулей и служб, узел по сути не создается Kubernetes: он создается извне облачными провайдерами, такими как Google Compute Engine, или существует в вашем пуле физических или виртуальных машин. Это означает, что когда Kubernetes создает узел, он на самом деле просто создает объект, который представляет узел. После создания Kubernetes проверит, является ли узел действительным или нет. [...] В настоящее время есть три компонента, которые взаимодействуют с интерфейсом узла Kubernetes: контроллер узла, kubelet и kubectl. [...] Емкость узла (количество процессоров и объем памяти) является частью объекта узла. Обычно узлы регистрируют себя и сообщают о своей емкости при создании объекта узла. Если вы выполняете ручное администрирование узла, то вам нужно установить емкость узла при добавлении узла.
Планировщик Kubernetes обеспечивает достаточное количество ресурсов для всех модулей в узле. Он проверяет, что сумма запросов контейнеров на узле не превышает емкость узла. Он включает в себя все контейнеры, запущенные kubelet, но не контейнеры, запускаемые непосредственно Docker, и процессы, не находящиеся в контейнерах.
Редактировать:
В качестве альтернативы, я мог бы также использовать конечную точку api/v1/pods, чтобы получить эту информацию для каждого модуля, которую я могу накапливать по узлам.
Это фактическое описание, в каком порядке это работает.
Но существует ли уже конечная точка API kubernetes, которая предоставляет информацию, относящуюся к запросам процессора / памяти и ограничениям на узел? Ответа на этот вопрос нет, нет.
К сожалению, нет конечной точки, чтобы получить эту информацию напрямую. Kubectl
использует несколько запросов, чтобы показать описание узлов. Вы можете проверить их по kubectl -v 8 describe nodes
:
Когда ты бежишь kubectl -v=8 describe nodes
Вы можете видеть вызовы GET в следующем порядке:
/api/v1/nodes?includeUninitialized=true
/api/v1/nodes/minikube
/api/v1/pods
/api/v1/events?fieldSelector