Контроллер ALB — работоспособности серверной части и метрики
Понимание работоспособности серверной части служб Kubernetes и модулей pod имеет решающее значение для выявления проблем и помощи в устранении неполадок. Чтобы упростить видимость работоспособности серверной части, контроллер ALB предоставляет внутренние конечные точки работоспособности и метрик во всех развертываниях контроллера балансировки нагрузки.
Работоспособности серверной части контроллера ALB предоставляет три различных интерфейса:
- Сводка работоспособности серверной части по Шлюз приложений для ресурса контейнеров
- Сводка работоспособности серверной части службой Kubernetes
- Подробные сведения о работоспособности серверной части для указанной службы 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 можно создать прослушиватель, который прокси-сервер передает трафик в 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 | Количество неработоспособных конечных точек в службе |