Поделиться через


Мониторинг развертываний рабочих нагрузок

Эта статья является частью серии. Начните с обзора.

Важно отслеживать работоспособность и производительность рабочих нагрузок Kubernetes, чтобы обеспечить оптимальную работу. Служба Azure Kubernetes (AKS) содержит несколько средств, которые можно использовать для проверки работоспособности и производительности развертываний, DaemonSet функций и служб.

Инструменты

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

  • Портал Azure.
  • Функция аналитики контейнеров Azure Monitor.
  • Средство командной строки kubectl.
  • Prometheus и Grafana.

Портал Azure

Портал Azure можно использовать для проверки работоспособности следующих компонентов в рабочих нагрузках. Дополнительные сведения см. в статье "Доступ к ресурсам Kubernetes" на портале Azure.

Развертывание, ReplicaSet, StatefulSetи DaemonSet

Убедитесь, что количество реплик, которые находятся в состоянии готовности , соответствует количеству требуемых реплик. На портале показано:

  • Количество доступных и готовых к обработке трафика реплик. Эти реплики успешно распределены по рабочим узлам, завершили процесс запуска и прошли проверку на готовность.

  • Требуемое количество реплик, указанных для развертывания, или количество реплик, которые развертывание стремится поддерживать. Контроллер развертывания Kubernetes постоянно отслеживает состояние развертывания и гарантирует, что фактическое количество реплик соответствует требуемому числу.

Службы и точки входа

Убедитесь, что состояние включено для всех служб и входящего трафика.

Хранение

Убедитесь, что состояние привязано ко всем утверждениям постоянного тома и постоянным томам.

Аналитика контейнеров

Аналитика контейнеров — это функция Монитора , которая предоставляет возможности мониторинга для рабочих нагрузок контейнеров, развернутых в AKS или управляемых Kubernetes с поддержкой Azure Arc. Эта функция собирает сведения о производительности и работоспособности, такие как метрики памяти и процессора из контроллеров, узлов и контейнеров. Он также записывает журналы контейнеров для анализа.

Это важно

Хотя служба Container Insights может использоваться для сбора метрик, мы рекомендуем использовать управляемую службу Azure Monitor для Prometheus для улучшения сбора метрик и использования Container Insights исключительно для сбора журналов.

Аналитика контейнеров позволяет анализировать собранные данные и понимать производительность и поведение компонентов в кластере. Ниже приведены некоторые способы использования Аналитики контейнеров.

  • Определите узкие места ресурсов путем анализа использования процессора и памяти контейнеров на каждом узле.
  • Изучите производительность групп контейнеров и отдельных контейнеров в средах контейнеров.
  • Посмотрите на общую продуктивность контроллеров или подов, определив расположение контейнеров в них.
  • Просмотрите использование ресурсов рабочих нагрузок на узле, которые не связаны с поддержкой стандартных процессов pod.
  • Узнайте, как работает кластер под средней и тяжелой нагрузкой, чтобы определить потребности в емкости и максимальную нагрузку.
  • Доступ к журналам и метрикам динамического контейнера для устранения неполадок в режиме реального времени.
  • Настройте оповещения для уведомления или записи использования ЦП и памяти, превышающих пороговые значения, и изменения состояния работоспособности в кластере.

На портале Azure Служба Аналитики контейнеров предоставляет средства для мониторинга и анализа работоспособности и производительности кластера AKS:

  • Кластер: предоставляет общие сведения о кластере AKS, включая метрики, такие как использование ЦП и памяти, количество модулей pod и узлов, а также сетевой трафик.
  • Отчеты: предоставляет предварительно созданные отчеты для визуализации и анализа производительности кластера, использования ресурсов, работоспособности pod и аналитики контейнеров.
  • Предоставляет подробные сведения о узлах в кластере, включая использование процессора и памяти, ввод-вывод данных на диске и в сети, а также состояние и статус узлов.
  • Контроллеры: обеспечивает видимость контроллеров Kubernetes в кластере AKS, показывая количество экземпляров, текущее состояние и состояние операций контроллера.
  • Контейнеры: предоставляет аналитические сведения о контейнерах, работающих в кластере AKS, включая использование ресурсов, перезапуски и события жизненного цикла.
  • Динамические журналы: предоставляет динамический поток событий журнала от запуска контейнеров, позволяя в режиме реального времени просматривать журналы контейнеров для мониторинга и устранения неполадок приложений.

Дополнительные сведения см. в следующих ресурсах:

Средство командной строки

Чтобы проверить состояние рабочих нагрузок, можно использовать средство командной строки kubectl для взаимодействия с плоскостью управления кластера Kubernetes через API Kubernetes.

Подшипники

Чтобы вывести список модулей pod, выполняемых во всех пространствах имен, выполните следующую команду:

kubectl get pod -A

В выходных данных команды столбец READY предоставляет важные сведения о состоянии готовности контейнеров pod.

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

Убедитесь, что первое число (готовые контейнеры) соответствует второму номеру (общему количеству контейнеров) для модуля pod. Если они отличаются, некоторые контейнеры могут быть не готовы или могут возникнуть проблемы, препятствующие их достижению готового состояния.

Развертывание, StatefulSet, DaemonSetи ReplicaSet

Выполните следующую команду, чтобы получить развертывания во всех пространствах имен:

kubectl get deploy -A

В выходных данных kubectl get deploy команды числа в столбце READY указывают текущее состояние готовности реплик в развертывании.

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

Важно убедиться, что первое число соответствует второму номеру. Указывает, что требуемое количество реплик запущено и готовы. Любое несоответствие между двумя числами может указывать на проблемы масштабирования или готовности, которые необходимо устранить.

Выполните следующую команду, чтобы получить функции StatefulSet во всех пространствах имен:

kubectl get statefulset -A

Выполните следующую команду, чтобы получить функции DaemonSet во всех пространствах имен:

kubectl get ds -A

Вы можете выполнить kubectl get ds команду, чтобы убедиться, что DaemonSet выполняется как ожидалось. Например, можно выполнить следующую команду, чтобы убедиться, что агент аналитики контейнеров успешно развернут:

kubectl get ds ama-logs --namespace=kube-system

Аналогичным образом, если вы настроите кластер AKS для сбора метрик Prometheus в управляемом Prometheus Monitor, можно выполнить следующую команду, чтобы убедиться, что оно правильно развернуто в пулах узлов Linux:

kubectl get ds ama-metrics-node --namespace=kube-system

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

Мы рекомендуем выполнить ту же проверку функций ReplicaSet . Вы можете использовать следующую команду для извлечения функций ReplicaSet во всех пространствах имен.

kubectl get rs -A

Убедитесь, что числа в этом результате одинаковы для каждого штата, чтобы предполагаемое число модулей pod или реплик запускались должным образом. Несоответствия могут указывать на необходимость дальнейшего изучения или устранения неполадок с помощью одной из следующих команд.

kubectl describe: Вы можете использовать команду kubectl describe для получения подробных сведений о ресурсах Kubernetes, таких как pods, развертывания и службы. Вы можете получить полный обзор указанного ресурса, включая текущее состояние, события, условия и связанные метаданные. Сведения извлекаются с сервера API Kubernetes. Эта команда полезна для устранения неполадок и понимания состояния ресурса.

kubectl describe pod <pod-name> Чтобы получить подробные сведения о конкретном pod, включая текущее состояние, события, метки и связанные с ним контейнеры. В выходных данных отображаются такие сведения, как состояние pod, события, тома и условия.

Журналы kubectl: Команду kubectl logs можно использовать для получения журналов, созданных контейнером в поде. Эта команда полезна для отладки и устранения неполадок. Журналы можно просматривать в режиме реального времени или извлекать их из контейнера в архиве.

Для просмотра журналов контейнеров можно использовать команду kubectl logs <pod-name> -c <container-name>. Замените <pod-name> именем модуля pod. Замените <container-name> именем контейнера, из которого требуется получить журналы. Если в модуле pod есть только один контейнер, вам не нужно указывать имя контейнера. Вы также можете использовать флаг -f с kubectl logs, чтобы следить за журналами в режиме реального времени. Этот флаг аналогичен команде tail -f Linux.

События kubectl: Вы можете использовать команду kubectl events для устранения неполадок, если развертывание, DaemonSetReplicaSet или pod не запускается или сталкивается с проблемой во время запуска. Эта команда предоставляет хронологический список событий, связанных с указанным ресурсом. Вы можете получить аналитические сведения о том, что могло вызвать проблему.

Для использования kubectl eventsможно выполнить команду kubectl events , за которой следует определенное имя ресурса. Кроме того, можно использовать селекторы для фильтрации событий на основе меток, пространств имен или других критериев.

Например, чтобы получить события, связанные с конкретным pod, можно запустить kubectl events --field-selector involvedObject.name=<pod-name> --field-selector involvedObject.kind=Pod. Замените <pod-name> именем пода, который вы хотите исследовать. Выходные данные kubectl events команды отображают такие сведения, как тип события (обычное или предупреждение), сообщение о событии, причина события и метка времени при возникновении события. Эти сведения помогут определить, что вызвало сбой или проблему во время запуска.

Если вы подозреваете, что определенный ресурс, такой как развертывание, DaemonSet, или ReplicaSet, имеет проблемы, можно фильтровать события с помощью селекторов. Например, kubectl events --field-selector involvedObject.name=<deployment-name> --field-selector involvedObject.kind=Deployment отображаются события, связанные с определенным развертыванием. Изучите события, чтобы получить важные сведения о потенциальных ошибках, сбоях или других событиях, которые могли препятствовать правильному запуску ресурса. Используйте эти данные для устранения неполадок и устранения проблем, влияющих на ресурс.

Мониторинг в кластере с помощью Prometheus и Grafana

При развертывании Prometheus и Grafana в кластере AKS можно использовать панель мониторинга сведений о кластере K8 для получения аналитических сведений. Эта панель мониторинга содержит сведения, собранные из метрик кластера Prometheus, таких как использование ЦП и памяти, сетевое действие и использование файловой системы. В нем также показана подробная статистика для отдельных подов, контейнеров и служб systemd.

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

Управляемый сервис мониторинга для Prometheus и управляемой Azure Grafana

Предварительно созданные панели мониторинга можно использовать для визуализации и анализа метрик Prometheus. Для этого необходимо настроить кластер AKS для сбора метрик в управляемой службе Monitor для Prometheus и подключить рабочую область Monitor к рабочей области Azure Managed Grafana.

Установите предварительно созданные панели мониторинга , чтобы получить комплексное представление о производительности и работоспособности кластера Kubernetes. Подробные инструкции по установке см. в разделе "Микс мониторинга Prometheus" для Kubernetes. Панели управления размещаются в указанном экземпляре Azure Managed Grafana в папке Managed Prometheus. К некоторым панелям мониторинга относятся:

  • Kubernetes / Вычислительные ресурсы или кластер
  • Kubernetes / Вычислительные ресурсы / Неймспейс (Pods)
  • Kubernetes / Вычислительные ресурсы / Узел (Pods)
  • Kubernetes / Вычислительные ресурсы / Pod
  • Kubernetes / Вычислительные ресурсы / пространство имен (рабочие нагрузки)
  • Kubernetes / Вычислительные ресурсы / Рабочая нагрузка
  • Kubernetes / Kubelet
  • Метод "Экспортер узлов" / "Метод USE" / Node
  • Экспортер узлов / Узлы
  • Kubernetes / Вычислительные ресурсы / кластер (Windows)
  • Kubernetes / Вычислительные ресурсы / неймспейс (Windows)
  • Kubernetes / Вычислительные ресурсы / Pod (Windows)
  • Kubernetes / USE Method / Cluster (Windows)
  • Kubernetes / USE Method / Node (Windows)

Эти встроенные панели мониторинга широко используются в сообществе с открытым кодом для мониторинга кластеров Kubernetes с помощью Prometheus и Grafana. Используйте эти панели мониторинга для просмотра таких метрик, как использование ресурсов, состояния пода и сетевая активность. Вы также можете создавать пользовательские панели мониторинга, адаптированные к вашим потребностям мониторинга. Панели мониторинга помогают эффективно отслеживать и анализировать метрики Prometheus в кластере AKS, что позволяет оптимизировать производительность, устранять проблемы и обеспечивать плавную работу рабочих нагрузок Kubernetes.

Панель мониторинга Kubernetes / Вычислительные ресурсы / Узлы (Pod) позволяет просматривать метрики для узлов агента Linux. Вы можете визуализировать использование ЦП, квоту ЦП, использование памяти и квоту памяти для каждого модуля pod.

Панель мониторинга Kubernetes / Вычислительные ресурсы / Pod Grafana предоставляет аналитические сведения о потреблении ресурсов и метриках производительности выбранного кластера, пространства имен и pod. Эту панель мониторинга можно использовать для получения метрик, связанных с использованием ЦП, регулированием ЦП, квотой ЦП, использованием памяти, квотой памяти, сетевыми метриками и метриками хранилища. На панели мониторинга выберите кластер AKS, пространство имен и под из выбранного пространства имен, чтобы просмотреть следующие сведения:

  • Использование ЦП. На этой диаграмме показано использование ЦП с течением времени для выбранного модуля pod. Вы можете просмотреть шаблон потребления ЦП и определить потенциальные пики или аномалии.

  • Регулирование ЦП. Эта диаграмма предоставляет информацию о регулировании ЦП, которое происходит, когда pod превышает ограничения ресурсов ЦП. Отслеживайте эту метрику, чтобы определить области, в которых производительность pod ограничена из-за регулирования ЦП.

  • Квота ЦП. На этой диаграмме показана выделенная квота ЦП для выбранного модуля pod. Если pod превышает назначенную квоту ЦП, может потребоваться корректировка ресурсов.

  • Использование памяти. На этой диаграмме представлено использование памяти выбранного модуля pod. Отслеживайте шаблон потребления памяти и определите все проблемы, связанные с памятью.

  • Квота памяти. На этой диаграмме отображается выделенная квота памяти для pod. Если модуль pod превышает назначенную квоту памяти, это может указывать на необходимость оптимизации ресурсов.

  • Сетевые метрики: эти диаграммы показывают полученную и передаваемую пропускную способность, а также скорость полученных и передаваемых пакетов. Эти метрики помогают отслеживать использование сети и обнаруживать потенциальные узкие места сети или аномалии.

  • Метрики хранилища. В этом разделе содержатся сведения о метриках, связанных с хранилищем, таких как операции ввода-вывода в секунду (IOPS) и пропускная способность. Отслеживайте эти метрики, чтобы оценить производительность и эффективность хранилища для узлов.

Панель мониторинга Kubernetes / Вычислительные ресурсы / Pod Grafana позволяет получить аналитические сведения об использовании ресурсов, производительности и поведении модулей pod в кластере Kubernetes. Используйте эти сведения для оптимизации распределения ресурсов, устранения проблем с производительностью и принятия обоснованных решений для обеспечения плавной работы контейнерных рабочих нагрузок.

Соавторы

Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участниками.

Основной автор:

Другие участники:

Чтобы просмотреть недоступные профили LinkedIn, войдите в LinkedIn.

Дальнейшие действия