Найти тему
Алексей Атлетов

Red Hat OpenShift. Мониторинг и метрики. Часть 1.

Оглавление

Red Hat OpenShift - это платформа на базе Kubernetes, которая помогает корпоративным пользователям развертывать и обслуживать контейнеризированные приложения.

Red Hat OpenShift - это семейство дистрибутивов Kubernetes, разрабатываемое компанией Red Hat.

OpenShift предоставляет ряд преимуществ по сравнению с автономной установкой Kubernetes или управляемой службой Kubernetes (например, Amazon EKS, Google Kubernetes Engine или Azure Kubernetes Service). К ним относятся более надежные функции многопользовательской работы, расширенная безопасность и мониторинг, интегрированные сети и хранилища, конвейеры CI/CD, управление образами контейнеров и другие инструменты разработчика.

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

Кластер Kubernetes состоит из узлов двух типов:

  1. Один или несколько узлов управления, на которых размещаются компоненты для администрирования кластера.
  2. Рабочие узлы, на которых размещаются и запускаются рабочая нагрузка контейнера.

Мы рассмотрим три большие категории показателей:

  • Показатели состояния кластера
  • Показатели ресурсов и квот контейнеров и узлов
  • Рабочие показатели уровня управления

Показатели состояния кластера

Серверы API Kubernetes отслеживают различные объекты Kubernetes, такие как модули, и передают информацию о их количестве, работоспособности и доступности. Эта информация используется внутренними процессами и компонентами Kubernetes для планирования новых модулей и контроля за их запуском и обслуживанием. Эти показатели состояния кластера предоставляют высокоуровневое представление о состоянии вашего кластера и могут помочь выявить проблемы с узлами или модулями. Они также могут предупредить вас о необходимости исследования узкого места или масштабирования вашего кластера.

Метрика Node condition

Этот показатель состояния кластера предоставляет обзор работоспособности узла. Он выполняет проверку следующих состояний узла:

  • OutOfDisk
  • Ready (node is ready to accept pods)
  • MemoryPressure (node memory is too low)
  • PIDPressure (too many running processes)
  • DiskPressure (remaining disk capacity is too low)
  • NetworkUnavailable

Метрика Desired vs. current pods

Желаемые и текущие поды. Мониторинг запущенных подов. Сколько вы разрешили в манифесте запускать подов и сколько запущено. Это важно, для того чтобы понимать какая нагрузка в настоящий момент на ваш кластер/систему. kube_deployment_spec_replicas и kube_deployment_status_replicas.

Метрика Available and unavailable pods

Под может быть запущен, но недоступен, что означает, что он не готов и не может принимать трафик. Это нормально при определенных обстоятельствах, например, при новом запуске модуля или при внесении изменений и развертывании спецификации этого модуля. Но если вы видите всплески количества недоступных модулей или модулей, которые постоянно недоступны, это может указывать на проблему с их конфигурацией или в общем с самим кластером.

-2

Ресурсные метрики

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

Метрики Requests and limits

В манифесте развертывания вы можете объявить запрос и ограничение для процессора (измеряемого в ядрах), памяти (измеряемой в байтах) и хранилища (также в байтах) для каждого контейнера(пода), запущенного в модуле. Запрос - это минимальный объем процессора или памяти, который узел выделит контейнеру; ограничение - это максимальный объем, который контейнеру будет разрешено использовать. Запросы и ограничения для всего модуля рассчитываются из суммы запросов и ограничений для входящих в него контейнеров. Запросы и ограничения не определяют фактическое использование ресурсов модуля, но они существенно влияют на то, как Kubernetes планирует модули на узлах. В частности, новые модули будут размещаться только на том узле, который может удовлетворить их запросы.

  • Memory requests - kube_pod_container_resource_requests_memory_bytes
  • Memory limits - kube_pod_container_resource_limits_memory_bytes
  • Allocatable memory - kube_node_status_allocatable_memory_bytes
  • CPU requests - kube_pod_container_resource_requests_cpu_cores
  • CPU limits - kube_pod_container_resource_limits_cpu_cores

Метрика Memory utilization

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

-3

Метрика Disk utilization

Как и память, дисковое пространство является несжимаемым ресурсом. Если kubelet обнаруживает нехватку дискового пространства на своем корневом томе, это может вызвать проблемы у планировщика с назначением модулей этому узлу. Если оставшаяся емкость диска узла превысит определенный порог ресурса, он будет помечен как находящийся под давлением диска. Kubelet узла отслеживает использование диска для двух файловых систем: nodefs, в которой хранятся локальные тома, журналы демона и т.д.; и imagefs, который является необязательным и используется для хранения образов контейнеров.

  • imagefs.available
  • imagefs.inodesFree
  • nodefs.available
  • nodefs.inodesFree

Метрика CPU utilization

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

Метрика Network throughput

Независимо от того, запускаете ли вы OpenShift в облаке, локально или и то, и другое, ваша среда состоит из объектов, которые должны взаимодействовать друг с другом - и с внешним миром — по сети. Это означает, что проблемы с подключением к сети на разных уровнях могут оказать существенное влияние на работоспособность и производительность вашего кластера. Например, если ваши серверы etcd не смогут взаимодействовать друг с другом, они потеряют кворум, что приведет к возможной потере вашего кластера. Отслеживание пропускной способности сети на ваших узлах и за их пределами может помочь выявить проблемы при взаимодействии с уровнем управления. Или мониторинг сетевой активности, агрегированный вашими службами, может помочь выявить возможные проблемы с конфигурацией.

....продолжение следует