Udostępnij za pośrednictwem


Pobieranie dzienników kubelet z węzłów klastra usługi Azure Kubernetes Service

Może być konieczne przejrzenie dzienników w celu rozwiązania problemu w klastrze usługi Azure Kubernetes Service (AKS). Narzędzia w witrynie Azure Portal umożliwiają wyświetlanie dzienników głównych składników i kontenerów klastra usługi AKS. Czasami może być konieczne pobranie dzienników kubelet z węzłów usługi AKS, aby ułatwić rozwiązywanie problemów.

W tym artykule przedstawiono sposób wyświetlania journalctl dzienników kubeletu na węźle AKS.

Alternatywnie można zbierać dzienniki kubelet przy użyciu funkcji zbierania dzienników syslog w usłudze Container Insights w Azure Monitor.

Zanim rozpoczniesz

W tym artykule przyjmujemy, że masz już istniejący klaster AKS. Jeśli potrzebujesz klastra usługi AKS, utwórz go przy użyciu interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell lub witryny Azure Portal.

Nawiązywanie połączenia z klastrem usługi AKS

Aby korzystać z klastra usługi AKS, najpierw uzyskaj poświadczenia klastra przy użyciu interfejsu wiersza polecenia platformy Azure:

export RESOURCE_GROUP_NAME="<ResourceGroupName>"
export AKS_CLUSTER_NAME="<AKSClusterName>"
az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $AKS_CLUSTER_NAME

To polecenie konfiguruje narzędzie kubectl do użycia poświadczeń dla klastra AKS.

Użyj polecenia kubectl raw

Dzienniki kubelet dowolnego węzła można szybko wyświetlić przy użyciu następującego polecenia:

export NODE_NAME="aks-agentpool-xxxxxxx-0"
kubectl get --raw "/api/v1/nodes/$NODE_NAME/proxy/logs/messages" | grep kubelet

Wyniki:

I0508 12:26:17.905042    8672 kubelet_node_status.go:497] Using Node Hostname from cloudprovider: "aks-agentpool-xxxxxxx-0"
I0508 12:26:27.943494    8672 kubelet_node_status.go:497] Using Node Hostname from cloudprovider: "aks-agentpool-xxxxxxx-0"
I0508 12:26:28.920125    8672 server.go:796] GET /stats/summary: (10.370874ms) 200 [[Ruby] 10.244.0.x:52492]
I0508 12:26:37.964650    8672 kubelet_node_status.go:497] Using Node Hostname from cloudprovider: "aks-agentpool-xxxxxxx-0"
...

Tworzenie połączenia SSH

Musisz utworzyć połączenie protokołu Secure Shell Protocol (SSH) z węzłem, dla którego należy wyświetlić dzienniki kubeletu. Aby utworzyć to połączenie, wykonaj kroki opisane w temacie SSH do węzłów klastra AKS.

Pobieranie dzienników agenta kubelet

Po nawiązaniu połączenia z węzłem za pomocą kubectl debug, uruchom następujące polecenie, aby wyciągnąć dzienniki kubelet.

chroot /host
journalctl -u kubelet -o cat

Uwaga

W przypadku węzłów systemu Windows dane dziennika są w systemie C:\k i można je wyświetlić za pomocą polecenia more:

more C:\k\kubelet.log

W poniższych przykładowych danych wyjściowych przedstawiono dane dziennika kubelet:

I0508 12:26:17.905042    8672 kubelet_node_status.go:497] Using Node Hostname from cloudprovider: "aks-agentpool-xxxxxxx-0"
I0508 12:26:27.943494    8672 kubelet_node_status.go:497] Using Node Hostname from cloudprovider: "aks-agentpool-xxxxxxx-0"
I0508 12:26:28.920125    8672 server.go:796] GET /stats/summary: (10.370874ms) 200 [[Ruby] 10.244.0.x:52292]
I0508 12:26:37.964650    8672 kubelet_node_status.go:497] Using Node Hostname from cloudprovider: "aks-agentpool-xxxxxxx-0"
I0508 12:26:47.996449    8672 kubelet_node_status.go:497] Using Node Hostname from cloudprovider: "aks-agentpool-xxxxxxx-0"
I0508 12:26:58.019746    8672 kubelet_node_status.go:497] Using Node Hostname from cloudprovider: "aks-agentpool-xxxxxxx-0"
I0508 12:27:05.107680    8672 server.go:796] GET /stats/summary/: (24.853838ms) 200 [[Go-http-client/1.1] 10.244.0.x:44660]
I0508 12:27:08.041736    8672 kubelet_node_status.go:497] Using Node Hostname from cloudprovider: "aks-agentpool-xxxxxxx-0"
I0508 12:27:18.068505    8672 kubelet_node_status.go:497] Using Node Hostname from cloudprovider: "aks-agentpool-xxxxxxx-0"
I0508 12:27:28.094889    8672 kubelet_node_status.go:497] Using Node Hostname from cloudprovider: "aks-agentpool-xxxxxxx-0"
I0508 12:27:38.121346    8672 kubelet_node_status.go:497] Using Node Hostname from cloudprovider: "aks-agentpool-xxxxxxx-0"
I0508 12:27:44.015205    8672 server.go:796] GET /stats/summary: (30.236824ms) 200 [[Ruby] 10.244.0.x:52588]
I0508 12:27:48.145640    8672 kubelet_node_status.go:497] Using Node Hostname from cloudprovider: "aks-agentpool-xxxxxxx-0"
I0508 12:27:58.178534    8672 kubelet_node_status.go:497] Using Node Hostname from cloudprovider: "aks-agentpool-xxxxxxx-0"
I0508 12:28:05.040375    8672 server.go:796] GET /stats/summary/: (27.78503ms) 200 [[Go-http-client/1.1] 10.244.0.x:44660]
I0508 12:28:08.214158    8672 kubelet_node_status.go:497] Using Node Hostname from cloudprovider: "aks-agentpool-xxxxxxx-0"
I0508 12:28:18.242160    8672 kubelet_node_status.go:497] Using Node Hostname from cloudprovider: "aks-agentpool-xxxxxxx-0"
I0508 12:28:28.274408    8672 kubelet_node_status.go:497] Using Node Hostname from cloudprovider: "aks-agentpool-xxxxxxx-0"
I0508 12:28:38.296074    8672 kubelet_node_status.go:497] Using Node Hostname from cloudprovider: "aks-agentpool-xxxxxxx-0"
I0508 12:28:48.321952    8672 kubelet_node_status.go:497] Using Node Hostname from cloudprovider: "aks-agentpool-xxxxxxx-0"
I0508 12:28:58.344656    8672 kubelet_node_status.go:497] Using Node Hostname from cloudprovider: "aks-agentpool-xxxxxxx-0"