Kubernetes – Найдите статистику по ядрам для пода

Вопрос или проблема

Я хотел бы найти статистику использования процессора по ядрам для моего Kubernetes pod.

На моем Linux-хосте/в узле Kubernetes я использую mpstat для поиска статистики, как показано ниже.

введите описание изображения здесь

В моем случае я выделяю 2.5 CPU для контейнера Kubernetes, и когда я выполняю ту же команду mpstat изнутри контейнера, я получаю такие же данные, как и выше, показывающие все процессоры хоста (в моем случае 16)

Я использовал команду kubectl top, но она просто показывает общее использование CPU пода, а не статистику по каждому процессору, выделенному контейнеру.

Prometheus’ container_cpu_usage_seconds_total предоставляет аналогичную общую информацию, но не детали по отдельным CPU.

Как я могу получить статистику, похожую на mpstat, как показано выше, для Kubernetes pod.

kubectl top — это команда, использующаяся для перечисления всех работающих узлов и подов вместе с их использованием ресурсов. Она предоставляет вам снимок метрик использования ресурсов, таких как CPU, память и хранилище на каждом работающем узле.

Каждый узел в Kubernetes идет с cAdvisor, это инструмент мониторинга контейнеров, который предоставляет детальную информацию об использовании ресурсов, включая CPU и память. Команда kubectl получает метрики использования ресурсов от cAdvisor через metrics-server. Эта команда требует, чтобы Metrics Server был правильно настроен и работал на сервере.

Metrics Server — это компонент, который предоставляет метрики использования ресурсов для объектов Kubernetes, включая поды. Попробуйте установить metrics server, или вы можете использовать k9, который является простым способом проверить все ваши ресурсы использования CPU и памяти.

Вы можете получить использование памяти и CPU пода из cgroup без установки metrics server или любого стороннего инструмента, выполнив следующие команды:

1. Перейдите в режим exec pod, выполнив kubectl exec -it pod\_name -n namespace -- /bin/bash

2. Для использования CPU выполните cat /sys/fs/cgroup/cpu/cpuacct.usage

3. Для использования памяти выполните cat /sys/fs/cgroup/memory/memory.usage\_in\_bytes

Примечание: Добавьте раздел ресурсов (запросы и лимиты) в развертывание, чтобы оно могло вычислить использование на основе cgroup, и контейнер будет уважать лимиты, установленные на уровне пода, а это использование в байтах может варьироваться в зависимости от использования пода, и эти значения могут часто изменяться.

Ответ или решение

Чтобы получить статистику использования CPU по ядрам для вашего пода в Kubernetes, вы можете использовать несколько подходов. К сожалению, стандартные инструменты, такие как kubectl top, предоставляют только общую информацию о потреблении ресурсов пода, но не подробную информацию по каждому ядру. Вот несколько способов, как можно решить эту задачу.

1. Использование kubectl exec для доступа к cgroup

Вы можете получить информацию о потреблении CPU и памяти непосредственно из cgroup, в котором работает ваш контейнер. Для этого выполните следующие шаги:

  1. Войдите в контейнер вашего пода с помощью команды:

    kubectl exec -it pod_name -n namespace -- /bin/bash
  2. Чтобы получить использование CPU, выполните команду:

    cat /sys/fs/cgroup/cpu/cpuacct.usage
  3. Для получения данных о потреблении памяти выполните команду:

    cat /sys/fs/cgroup/memory/memory.usage_in_bytes

Эти файлы содержат информацию о том, сколько времени CPU использовал ваш контейнер (в наносекундах) и сколько памяти он потребляет.

2. Установка и использование Metrics Server

Для получения более детализированной информации о ресурсах (если вам необходимо больше данных и функциональности) вы можете установить Metrics Server. Это компонент, который собирает метрики использования ресурсов от kubelet и предоставляет их в формате, доступном для kubectl top.

  1. Установите Metrics Server, следуя руководству по установке: Metrics Server. Убедитесь, что он правильно настроен и работает на вашем кластере.

  2. После установки вы сможете использовать:

    kubectl top pod -n namespace

3. Использование Prometheus и cAdvisor

Если вы хотите более детализированные метрики, вы можете использовать Prometheus с cAdvisor для мониторинга ресурсов. cAdvisor собирает метрики о контейнерах, включая использование CPU по ядрам.

  1. Установите Prometheus и cAdvisor в ваш кластер Kubernetes.

  2. Используйте метрики такие как container_cpu_usage_seconds_total для получения общего использования CPU, но для более детального анализа вам может потребоваться кастомная настройка или специализированные графики для визуализации метрик по каждому ядру.

4. Использование инструментов мониторинга, таких как k9s

Вы можете рассмотреть возможность использования k9s, который облегчит мониторинг ресурсов вашего кластера, включая использование CPU и памяти. Это CLI-инструмент, который предоставляет простой интерфейс для работы с Kubernetes ресурсами.

Заключение

Получить детальную статистику использования CPU по ядрам для пода в Kubernetes может быть сложной задачей, но с помощью инструментов, описанных выше, вы сможете собрать необходимую информацию. Использование cgroup дает возможность получать данные напрямую, в то время как установка Metrics Server и Prometheus позволяет вам получить более обширную и детализированную панель мониторинга для вашего кластера.

Оцените материал
Добавить комментарий

Капча загружается...