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


Мониторинг кластера Nexus Kubernetes

Каждый кластер Nexus Kubernetes состоит из нескольких слоев:

  • Виртуальные машины (ВМ)
  • Слой Kubernetes
  • Модули pod приложений

Снимок экрана: пример кластера Nexus Kubernetes.

Рис. Пример кластера Nexus Kubernetes

В экземпляре кластеры Nexus Kubernetes доставляются с необязательным решением для наблюдения Container Insights. Container Insights записывает журналы и метрики из кластеров и рабочих нагрузок Nexus Kubernetes. Это исключительно ваше усмотрение, следует ли включить это средство или развернуть собственный стек телеметрии.

Кластер Nexus Kubernetes со средством мониторинга Azure выглядит следующим образом:

Снимок экрана: кластер Nexus Kubernetes с инструментами мониторинга.

Рис. Кластер Nexus Kubernetes с инструментами мониторинга

Подключение расширений с помощью интерфейса командной строки с помощью проверки подлинности управляемого удостоверения

Документация по началу с Azure CLI, установка ее в нескольких операционных системах и установка расширений CLI.

Установите последнюю версию необходимых расширений CLI.

Мониторинг кластера Nexus Kubernetes

В этом руководстве приведены инструкции по включению агентов мониторинга для сбора журналов системы из этих виртуальных машин с помощью агента мониторинга Azure. Дополнительные инструкции содержат сведения о настройке сбора данных журнала в пространстве Log Analytics.

Предпосылки

  • Доступ администратора кластера к кластеру Nexus Kubernetes.

  • Чтобы использовать серверы с поддержкой Azure Arc, зарегистрируйте в подписке следующие поставщики ресурсов Azure:

    • Microsoft.HybridCompute
    • Microsoft.GuestConfiguration
    • Microsoft.HybridConnectivity

Зарегистрируйте этих поставщиков ресурсов, если это не сделано ранее:

az account set --subscription "{the Subscription Name}"
az provider register --namespace 'Microsoft.HybridCompute'
az provider register --namespace 'Microsoft.GuestConfiguration'
az provider register --namespace 'Microsoft.HybridConnectivity'
  • При необходимости назначьте учетную запись службы Azure на следующие встроенные роли Azure. Назначьте служебного принципала группе ресурсов Azure, содержащей машины для подключения.
Role Требуется
Администратор ресурсов подключенных компьютеров Azure или участник Подключение сервера виртуальной машины кластера Nexus Kubernetes с поддержкой Arc в группе ресурсов и установка агента мониторинга Azure (AMA)
Участник мониторинга или Участник Создайте правило сбора данных (DCR) в группе ресурсов и свяжите с ним серверы с поддержкой Arc.
Администратор доступа пользователей и соавтор политики ресурсов, или участник Необходимо, если вы хотите использовать назначения политик Azure, чтобы обеспечить связь DCR с компьютерами с поддержкой Arc.
Участник расширения Kubernetes Требуется для развертывания расширения K8s для Аналитики контейнеров

Мониторинг кластера Nexus Kubernetes

Предпосылки

Оператор должен обеспечить выполнение определённых предварительных условий для настройки инструментов мониторинга в кластерах Nexus Kubernetes.

Container Insights хранит свои данные в рабочей области Log Analytics. Данные журнала передаются в рабочую область, идентификатор ресурса которой вы указали во время установки расширения Container Insights. В противном случае данные направляются в рабочую область по умолчанию в группе ресурсов, связанной с вашей подпиской (в зависимости от региона Azure).

Пример для восточной части США может выглядеть следующим образом:

  • Имя рабочей области Log Analytics: DefaultWorkspace-<GUID>-EUS
  • Имя группы ресурсов: DefaultResourceGroup-EUS

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

az login

az account set --subscription "<Subscription Name or ID the Log Analytics workspace is in>"

az monitor log-analytics workspace show --workspace-name "<Log Analytics workspace Name>" \
  --resource-group "<Log Analytics workspace Resource Group>" \
  -o tsv --query id

Для развертывания Аналитики контейнеров и просмотра данных в применимой рабочей области Log Analytics требуются определенные назначения ролей в вашей учетной записи. Например, назначение роли "Сотрудник". См. инструкции по назначению обязательных ролей.

  • Роль Log Analytics Contributor: необходимые разрешения для включения мониторинга контейнеров на подготовленном кластере CNF.
  • Роль читателя Log Analytics: лица, не входящие в состав роли участника Log Analytics, получают разрешения на просмотр данных в рабочей области Log Analytics после включения мониторинга контейнеров.

Установка расширения кластера

Войдите в Azure Cloud Shell для доступа к кластеру:

az login

az account set --subscription "<Subscription Name or ID the Provisioned Cluster is in>"

Теперь разверните расширение Container Insights в подготовленном кластере Nexus Kubernetes с помощью любой из следующих двух команд:

С предварительно созданной заказчиком рабочей областью Log Analytics

az k8s-extension create --name azuremonitor-containers \
  --cluster-name "<Nexus Kubernetes cluster Name>" \
  --resource-group "<Nexus Kubernetes cluster Resource Group>" \
  --cluster-type connectedClusters \
  --extension-type Microsoft.AzureMonitor.Containers \
  --release-train preview \
  --configuration-settings logAnalyticsWorkspaceResourceID="<Log Analytics workspace Resource ID>" \
  amalogsagent.useAADAuth=true

Использование рабочей области Log Analytics по умолчанию

az k8s-extension create --name azuremonitor-containers \
  --cluster-name "<Nexus Kubernetes cluster Name>" \
  --resource-group "<Nexus Kubernetes cluster Resource Group>" \
  --cluster-type connectedClusters \
  --extension-type Microsoft.AzureMonitor.Containers \
  --release-train preview \
  --configuration-settings amalogsagent.useAADAuth=true

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

Проверьте успешное развертывание включения агентов мониторинга в кластерах Nexus Kubernetes с помощью следующей команды:

az k8s-extension show --name azuremonitor-containers \
  --cluster-name "<Nexus Kubernetes cluster Name>" \
  --resource-group "<Nexus Kubernetes cluster Resource Group>" \
  --cluster-type connectedClusters

Найдите состояние подготовки "Успешно" для расширения. Команда "k8s-extension create" также могла вернуть статус.

Настройка коллекции журналов и метрик

Container Insights предоставляет функции конечных пользователей для точной настройки коллекции журналов и метрик из кластеров Nexus Kubernetes. Обратитесь к инструкциям по настройке агентов аналитики контейнеров для сбора данных для сбора журналов и к инструкции по отправке метрик Prometheus в рабочую область Log Analytics с помощью аналитики контейнеров для сбора метрик.

Замечание

Служба Container Insights не собирает журналы из kube-system пространства имен по умолчанию. Чтобы собирать журналы из kube-system пространства имен, необходимо настроить агент для сбора журналов из kube-system пространства имен. Это можно сделать, удалив kube-system пространство имен из excludedNamespaces поля в ConfigMap в соответствии с подходом configMap конфигурации.

[log_collection_settings]
  [log_collection_settings.stdout]
    # In the absence of this configmap, default value for enabled is true
    enabled = true
    # exclude_namespaces setting holds good only if enabled is set to true
    # kube-system,gatekeeper-system log collection are disabled by default in the absence of 'log_collection_settings.stdout' setting. If you want to enable kube-system,gatekeeper-system, remove them from the following setting.
    # If you want to continue to disable kube-system,gatekeeper-system log collection keep the namespaces in the following setting and add any other namespace you want to disable log collection to the array.
    # In the absence of this configmap, default value for exclude_namespaces = ["kube-system","gatekeeper-system"]
    exclude_namespaces = ["gatekeeper-system"]
    # If you want to collect logs from only selective pods inside system namespaces add them to the following setting. Provide namespace:controllerName of the system pod. NOTE: this setting is only for pods in system namespaces
    # Valid values for system namespaces are: kube-system, azure-arc, gatekeeper-system, kube-public, kube-node-lease, calico-system. The system namespace used should not be present in exclude_namespaces
    # collect_system_pod_logs = ["kube-system:coredns"]

  [log_collection_settings.stderr]
    # Default value for enabled is true
    enabled = true
    # exclude_namespaces setting holds good only if enabled is set to true
    # kube-system,gatekeeper-system log collection are disabled by default in the absence of 'log_collection_settings.stderr' setting. If you want to enable kube-system,gatekeeper-system, remove them from the following setting.
    # If you want to continue to disable kube-system,gatekeeper-system log collection keep the namespaces in the following setting and add any other namespace you want to disable log collection to the array.
    # In the absence of this configmap, default value for exclude_namespaces = ["kube-system","gatekeeper-system"]
    exclude_namespaces = ["gatekeeper-system"]
    # If you want to collect logs from only selective pods inside system namespaces add them to the following setting. Provide namespace:controllerName of the system pod. NOTE: this setting is only for pods in system namespaces
    # Valid values for system namespaces are: kube-system, azure-arc, gatekeeper-system, kube-public, kube-node-lease, calico-system. The system namespace used should not be present in exclude_namespaces
    # collect_system_pod_logs = ["kube-system:coredns"]

Дополнительные ресурсы