Kontroler usługi ALB — kondycja zaplecza i metryki
Zrozumienie kondycji zaplecza usług i zasobników Kubernetes ma kluczowe znaczenie w identyfikowaniu problemów i pomocy w rozwiązywaniu problemów. Aby ułatwić wgląd w kondycję zaplecza, kontroler usługi ALB uwidacznia kondycję zaplecza i punkty końcowe metryk we wszystkich wdrożeniach kontrolera usługi ALB.
Kondycja zaplecza kontrolera usługi ALB uwidacznia trzy różne środowiska:
- Podsumowanie kondycji zaplecza przez zasób usługi Application Gateway for Containers
- Podsumowanie kondycji zaplecza przez usługę Kubernetes
- Szczegółowa kondycja zaplecza dla określonej usługi Kubernetes
Punkt końcowy metryki kontrolera usługi ALB uwidacznia zarówno metryki, jak i podsumowanie kondycji zaplecza. Ten punkt końcowy umożliwia narażenie na działanie rozwiązania Prometheus.
Dostęp do tych punktów końcowych można uzyskać za pośrednictwem następujących adresów URL:
- Kondycja zaplecza — http://< alb-controller-pod-ip>:8000/backendHealth
- Dane wyjściowe są formatem JSON
- Metryki — http://< alb-controller-pod-ip>:8001/metrics
- Dane wyjściowe są formatem tekstowym
Wszyscy klienci lub zasobniki, którzy mają łączność z tym zasobnikem i portem, mogą uzyskiwać dostęp do tych punktów końcowych. Aby ograniczyć dostęp, zalecamy użycie zasad sieci platformy Kubernetes w celu ograniczenia dostępu do niektórych klientów.
Kondycja wewnętrznej bazy danych
Odnajdywanie kondycji zaplecza
Kontroler usługi ALB uwidacznia kondycję zaplecza na zasobniku kontrolera usługi ALB, który działa jako podstawowy.
Aby znaleźć zasobnik podstawowy, uruchom następujące polecenie:
CONTROLLER_NAMESPACE='azure-alb-system'
kubectl get lease -n $CONTROLLER_NAMESPACE alb-controller-leader-election -o jsonpath='{.spec.holderIdentity}' | awk -F'_' '{print $1}'
- Uzyskiwanie dostępu do kondycji zaplecza za pomocą polecenia Kubectl
- Uzyskiwanie dostępu do kondycji zaplecza za pośrednictwem zasobnika kontrolera bezpośrednio
W przypadku dostępu pośredniego za pośrednictwem narzędzia kubectl można utworzyć odbiornik, który proxy ruchu do zasobnika.
kubectl port-forward <pod-name> -n $CONTROLLER_NAMESPACE 8000 8001
Gdy polecenie kubectl nasłuchuje, otwórz inny terminal (lub sesję usługi Cloud Shell) i wykonaj polecenie curl do wersji 127.0.0.1, aby zostać przekierowane do zasobnika.
curl http://127.0.0.1:8000
Przykładowa odpowiedź:
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
Podsumowanie kondycji zaplecza przez usługę Application Gateway dla kontenerów
To środowisko zawiera podsumowanie wszystkich usług Kubernetes z odwołaniami do usługi Application Gateway for Containers i odpowiadających im stanu kondycji.
Dostęp do tego środowiska można uzyskać, określając identyfikator zasobu usługi Application Gateway for Containers w zapytaniu żądania do zasobnika alb-controller.
Następujące polecenie może służyć do sondowania kondycji zaplecza dla określonego zasobu usługi Application Gateway for Containers.
curl http://\<alb-controller-pod-ip-address\>:8000/backendHealth?alb-id=/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/yyyyyyyy/providers/Microsoft.ServiceNetworking/trafficControllers/zzzzzzzzzz
Przykładowe wyjście:
{
"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
}
]
}
]
}
Podsumowanie kondycji zaplecza przez usługę Kubernetes
To środowisko wyszukuje stan podsumowania kondycji danej usługi.
Dostęp do tego środowiska można uzyskać, określając nazwę przestrzeni nazw, usługi i numeru portu usługi w następującym formacie ciągu zapytania do zasobnika alb-controller: <przestrzeń nazw>/<usługa>/<numer-port-usługi>
Następujące polecenie może służyć do sondowania kondycji zaplecza dla określonej usługi Kubernetes.
curl http://\<alb-controller-pod-ip-address\>:8000/backendHealth?service-name=default/service-hello-world/80
Przykładowe wyjście:
{
"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
}
]
}
]
}
Szczegółowa kondycja zaplecza dla określonej usługi Kubernetes
To środowisko pokazuje wszystkie punkty końcowe, które tworzą usługę, w tym ich odpowiedni stan kondycji i adres IP. Stan punktu końcowego jest zgłaszany jako W DOBREJ KONDYCJI lub W ZŁEJ KONDYCJI.
Dostęp do tego środowiska można uzyskać, określając parametr detailed=true w ciągu zapytania do zasobnika alb-controller.
Na przykład możemy zweryfikować kondycję poszczególnych punktów końcowych, wykonując następujące polecenie:
curl http://\<alb-controller-pod-ip-address\>:8000/backendHealth?service-name=default/service-hello-world/80\&detailed=true
Przykładowe wyjście:
{
"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"
}
}
]
}
]
}
]
}
Metryki
Kontroler usługi ALB obecnie udostępnia metryki w formacie opartym na tekście, które mają być uwidocznione w usłudze Prometheus. Dostęp do tych dzienników jest dostępny na porcie 8001 podstawowego zasobnika http://\<alb-controller-pod-ip\>:8001/metrics
kontrolera alb .
Obecnie uwidocznione są następujące metryki:
Nazwa metryki | opis |
---|---|
alb_connection_status | Stan połączenia z zasobem usługi Application Gateway for Containers |
alb_reconnection_count | Liczba ponownych prób nawiązania połączenia z zasobami usługi Application Gateway for Containers |
total_config_updates | Liczba operacji konfiguracji routingu usługi |
total_endpoint_updates | Liczba operacji konfiguracji puli zaplecza |
total_deployments | Liczba wdrożeń zasobów usługi Application Gateway dla kontenerów |
total_endpoints | Liczba punktów końcowych w usłudze |
total_healthy_endpoints | Liczba punktów końcowych w dobrej kondycji w usłudze |
total_unhealthy_endpoints | Liczba punktów końcowych w złej kondycji w usłudze |