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


Контроллер ALB — работоспособности серверной части и метрики

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

Работоспособности серверной части контроллера ALB предоставляет три различных интерфейса:

  1. Сводка работоспособности серверной части по Шлюз приложений для ресурса контейнеров
  2. Сводка работоспособности серверной части службой Kubernetes
  3. Подробные сведения о работоспособности серверной части для указанной службы Kubernetes

Конечная точка метрики контроллера ALB предоставляет как метрики, так и сводку о работоспособности серверной части. Эта конечная точка позволяет использовать Prometheus.

Доступ к этим конечным точкам можно получить с помощью следующих URL-адресов:

  • Работоспособность серверной части — http://< alb-controller-pod-ip>:8000/backendHealth
    • Выходные данные — формат JSON
  • Метрики — http://< alb-controller-pod-ip>:8001/метрики
    • Выходные данные — текстовый формат

Все клиенты или модули pod, имеющие подключение к этому модулем pod и порту, могут получить доступ к этим конечным точкам. Чтобы ограничить доступ, рекомендуется использовать политики сети Kubernetes для ограничения доступа к определенным клиентам.

Работоспособность серверной части

Обнаружение работоспособности серверной части

Контроллер ALB предоставляет серверную работоспособность в модуле контроллера ALB, который выступает в качестве основного.

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

CONTROLLER_NAMESPACE='azure-alb-system'
kubectl get lease -n $CONTROLLER_NAMESPACE alb-controller-leader-election -o jsonpath='{.spec.holderIdentity}' | awk -F'_' '{print $1}'

Для косвенного доступа через служебную программу kubectl можно создать прослушиватель, который прокси-сервер передает трафик в pod.

kubectl port-forward <pod-name> -n $CONTROLLER_NAMESPACE 8000 8001

После прослушивания команды kubectl откройте другой терминал (или сеанс cloud shell) и выполните curl до версии 127.0.0.1, чтобы быть перенаправлены в модуль pod.

curl http://127.0.0.1:8000

Пример ответа:

Available paths:
Path: /backendHealth
Description: Prints the backend health of the ALB.
Query Parameters:
        detailed: if true, prints the detailed view of the backend health
        alb-id: Resource ID of the Application Gateway for Containers to filter backend health for.
        service-name: Service to filter backend health for. Expected format: \<namespace\>/\<service\>/\<service-port-number\>

Path: /
Description: Prints the help

Сводка работоспособности серверной части Шлюз приложений для контейнеров

В этом интерфейсе представлены все службы Kubernetes со ссылками на Шлюз приложений для контейнеров и соответствующее состояние работоспособности.

К этому интерфейсу можно получить доступ, указав идентификатор ресурса Шлюз приложений для контейнеров в запросе запроса на модуль pod alb-controller.

Следующая команда может использоваться для проверки работоспособности серверной части для указанного Шлюз приложений ресурса контейнеров.

curl http://\<alb-controller-pod-ip-address\>:8000/backendHealth?alb-id=/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/yyyyyyyy/providers/Microsoft.ServiceNetworking/trafficControllers/zzzzzzzzzz

Пример результата:

{
  "services": [
    {
      "serviceName": "default/service-hello-world/80",
      "serviceHealth": [
        {
          "albId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/yyyyyyyy/providers/Microsoft.ServiceNetworking/trafficControllers/zzzzzzzzzz",
          "totalEndpoints": 1,
          "totalHealthyEndpoints": 1,
          "totalUnhealthyEndpoints": 0
        }
      ]
    },
    {
      "serviceName": "default/service-contoso/443",
      "serviceHealth": [
        {
          "albId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/yyyyyyyy/providers/Microsoft.ServiceNetworking/trafficControllers/zzzzzzzzzz",
          "totalEndpoints": 1,
          "totalHealthyEndpoints": 1,
          "totalUnhealthyEndpoints": 0
        }
      ]
    }
  ]
}

Сводка работоспособности серверной части службой Kubernetes

Этот интерфейс ищет состояние сводки работоспособности определенной службы.

Доступ к этому интерфейсу можно получить, указав имя пространства имен, службы и номера порта службы в следующем формате строки запроса в модуле pod alb-controller: <namespace>/<service>/<service-port-number>

Следующая команда может использоваться для проверки работоспособности серверной части для указанной службы Kubernetes.

curl http://\<alb-controller-pod-ip-address\>:8000/backendHealth?service-name=default/service-hello-world/80

Пример результата:

{
  "services": [
    {
      "serviceName": "default/service-hello-world/80",
      "serviceHealth": [
        {
          "albId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/yyyyyyyy/providers/Microsoft.ServiceNetworking/trafficControllers/zzzzzzzzzz",
          "totalEndpoints": 1,
          "totalHealthyEndpoints": 1,
          "totalUnhealthyEndpoints": 0
        }
      ]
    }
  ]
}

Подробные сведения о работоспособности серверной части для указанной службы Kubernetes

В этом интерфейсе показаны все конечные точки, составляющие службу, включая соответствующее состояние работоспособности и IP-адрес. Состояние конечной точки сообщается как "РАБОТОСПОСОБНОЕ" или "НЕРАБОТОСПОСОБНО".

Доступ к этому интерфейсу можно получить, указав подробный=true в строке запроса для модуля pod alb-controller.

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

curl http://\<alb-controller-pod-ip-address\>:8000/backendHealth?service-name=default/service-hello-world/80\&detailed=true

Пример результата:

{
  "services": [
    {
      "serviceName": "default/service-hello-world/80",
      "serviceHealth": [
        {
          "albId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/yyyyyyyy/providers/Microsoft.ServiceNetworking/trafficControllers/zzzzzzzzzz",
          "totalEndpoints": 1,
          "totalHealthyEndpoints": 1,
          "totalUnhealthyEndpoints": 0,
          "endpoints": [
            {
              "address": "10.1.1.22",
              "health": {
                "status": "HEALTHY"
              }
            }
          ]
        }
      ]
    }
  ]
}

Метрики

Контроллер ALB в настоящее время предоставляет метрики в соответствии с текстовым форматом , предоставляемым Prometheus. Доступ к этим журналам доступен через порт 8001 основного модуля контроллера http://\<alb-controller-pod-ip\>:8001/metricsбалансировки нагрузки.

Сегодня предоставляются следующие метрики:

Имя метрики Description
alb_connection_status Состояние подключения к ресурсу Шлюз приложений для контейнеров
alb_reconnection_count Количество попыток повторного подключения к Шлюз приложений для ресурсов контейнеров
total_config_updates Количество операций конфигурации маршрутизации служб
total_endpoint_updates Количество операций конфигурации серверного пула
total_deployments Количество Шлюз приложений для развертываний ресурсов контейнеров
total_endpoints Количество конечных точек в службе
total_healthy_endpoints Количество работоспособных конечных точек в службе
total_unhealthy_endpoints Количество неработоспособных конечных точек в службе