Udostępnij za pośrednictwem


Używanie zdarzeń Kubernetes na potrzeby rozwiązywania problemów w usłudze Azure Kubernetes Service (AKS)

W tym artykule pokazano, jak używać zdarzeń kubernetes do monitorowania i rozwiązywania problemów w klastrach usługi Azure Kubernetes Service (AKS).

Co to są zdarzenia Kubernetes?

Zdarzenia są jednym z najbardziej istotnych źródeł monitorowania i rozwiązywania problemów w Kubernetes. Przechwytują i rejestrują informacje o cyklu życia różnych obiektów Kubernetes, takich jak zasobniki, węzły, usługi i wdrożenia. Monitorując zdarzenia, można uzyskać wgląd w działania klastra, identyfikować problemy i skutecznie rozwiązywać problemy.

Zdarzenia Kubernetes nie są zachowywane w całym cyklu życia klastra, ponieważ nie istnieje mechanizm ich przechowywania. Zdarzenia są dostępne tylko przez jedną godzinę po wygenerowaniu zdarzenia. Aby przechowywać zdarzenia przez dłuższy czas, włącz usługę Container Insights.

Obiekty zdarzeń Kubernetes

W poniższej tabeli wymieniono niektóre kluczowe obiekty zdarzeń Kubernetes:

Nazwa pola Opis
typ Typ jest oparty na ważności zdarzenia:
Zdarzenia ostrzegawcze sygnalizują potencjalnie problematyczne sytuacje, takie jak wielokrotne niepowodzenie podu lub brak zasobów węzła. Wymagają one uwagi, ale mogą nie spowodować natychmiastowego niepowodzenia.
Zdarzenia normalne reprezentują rutynowe operacje, takie jak zaplanowany zasobnik lub skalowanie wdrożenia w górę. Zwykle wskazują zdrowe zachowanie klastra.
powód Przyczyna wygenerowania zdarzenia. Na przykład FailedScheduling lub CrashLoopBackoff.
komunikat Czytelny dla człowieka komunikat opisujący zdarzenie.
obszar nazw Przestrzeń nazw obiektu Kubernetes, z którą jest skojarzone zdarzenie.
firstSeen Sygnatura czasowa, kiedy zdarzenie zostało zaobserwowane po raz pierwszy.
lastSeen Sygnatura czasowa ostatniego zaobserwowanego zdarzenia.
Kontroler Raportowania Nazwa kontrolera, który zgłosił zdarzenie. Na przykład kubernetes.io/kubelet.
obiekt Nazwa obiektu Kubernetes skojarzonego ze zdarzeniem.

Aby uzyskać więcej informacji, zobacz oficjalną dokumentację platformy Kubernetes.

Wyświetlanie zdarzeń platformy Kubernetes

Wyświetl listę wszystkich zdarzeń w klastrze przy użyciu kubectl get events polecenia .

Zakładając, że klaster jest już utworzony i dostępny (zgodnie z wymaganiami wstępnymi dokumentu), pobierz dane uwierzytelniające (zauważ, że flaga --overwrite-existing jest ustawiona, aby uniknąć błędów narzędzia kubeconfig):

az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_CLUSTER --overwrite-existing

Teraz wyświetl listę wszystkich zdarzeń w klastrze:

kubectl get events

Wyniki:

LAST SEEN   TYPE      REASON              OBJECT                      MESSAGE
xxm         Normal    Scheduled           pod/my-pod-xxxxx            Successfully assigned default/my-pod-xxxxx to aks-nodepoolxx-xxxxxxx-vmss000000
xxm         Normal    Pulled              pod/my-pod-xxxxx            Container image "nginx" already present on machine
xxm         Normal    Created             pod/my-pod-xxxxx            Created container nginx
xxm         Normal    Started             pod/my-pod-xxxxx            Started container nginx
...

Przyjrzyj się zdarzeń określonego zasobnika, wyszukując najpierw nazwę zasobnika, a następnie używając kubectl describe pod polecenia .

Wyświetl listę podów w bieżącej przestrzeni nazw:

kubectl get pods

Wyniki:

NAME                             READY   STATUS    RESTARTS   AGE
my-pod-xxxxx                     1/1     Running   0          xxm
nginx-deployment-xxxxx           1/1     Running   0          xxm
...

Zastąp <pod-name> poniżej rzeczywistą nazwą zasobnika. W przypadku automatyzacji oto przykład pierwszego poda na liście:

POD_NAME=$(kubectl get pods -o jsonpath="{.items[0].metadata.name}")
kubectl describe pod $POD_NAME

Najlepsze praktyki dotyczące rozwiązywania problemów ze zdarzeniami

Filtrowanie zdarzeń pod kątem istotności

W klastrze AKS może działać wiele różnych przestrzeni nazw i usług. Filtrowanie zdarzeń na podstawie typu obiektu, przestrzeni nazw lub przyczyny może pomóc zawęzić wyniki do najbardziej odpowiednich informacji.

Możesz na przykład użyć następującego polecenia, aby filtrować zdarzenia w domyślnej przestrzeni nazw:

kubectl get events --namespace default

Automatyzowanie powiadomień o zdarzeniach

Aby zapewnić terminową reakcję na zdarzenia krytyczne w klastrze usługi AKS, skonfiguruj automatyczne powiadomienia. Platforma Azure oferuje integrację z usługami monitorowania i alertów, takimi jak Azure Monitor. Alerty można skonfigurować do wyzwalania na podstawie określonych wzorców zdarzeń. Dzięki temu jesteś natychmiast informowany o kluczowych kwestiach, które wymagają uwagi.

Regularne przeglądanie zdarzeń

Wyrób sobie nawyk regularnego przeglądania zdarzeń w klastrze AKS. Takie proaktywne podejście może pomóc zidentyfikować trendy, wcześnie złapać potencjalne problemy i zapobiec eskalacjom. Pozostając na bieżąco ze zdarzeniami, można zachować stabilność i wydajność aplikacji.

Dalsze kroki

Po zapoznaniu się ze zdarzeniami platformy Kubernetes możesz kontynuować proces monitorowania i obserwacji, włączając szczegółowe informacje o kontenerze.