다음을 통해 공유


AKS(Azure Kubernetes Service)에서 문제 해결을 위해 Kubernetes 이벤트 사용

이 문서에서는 Kubernetes 이벤트를 사용하여 AKS(Azure Kubernetes Service) 클러스터의 문제를 모니터링하고 해결하는 방법을 보여 줍니다.

Kubernetes 이벤트란?

이벤트는 Kubernetes의 문제를 모니터링하고 해결하기 위한 가장 중요한 소스 중 하나입니다. Pod, 노드, 서비스 및 배포와 같은 다양한 Kubernetes 개체의 수명 주기에 대한 정보를 캡처하고 기록합니다. 이벤트를 모니터링하여 클러스터의 활동을 파악하고, 문제를 식별하고, 문제를 효과적으로 해결할 수 있습니다.

Kubernetes 이벤트는 보존 메커니즘이 없으므로 클러스터 수명 주기 내내 유지되지 않습니다. 이벤트는 이벤트가 생성된 후 1시간 동안만 사용할 수 있습니다. 더 긴 기간 동안 이벤트를 저장하려면 Container Insights를 사용하도록 설정합니다.

Kubernetes 이벤트 개체

다음 표에서는 몇 가지 주요 Kubernetes 이벤트 개체를 나열합니다.

필드 이름 설명
type 형식은 이벤트의 심각도를 기반으로 합니다.
경고 이러한 이벤트는 Pod가 반복적으로 실패하거나 노드에 리소스가 부족해지는 등 잠재적으로 문제가 있는 상황을 나타냅니다. 주의가 필요하지만 즉각적인 실패로 이어지지 않을 수도 있습니다.
일반 이러한 이벤트는 예약 중인 Pod 또는 배포 확장과 같은 일상적인 작업을 나타냅니다. 일반적으로 정상 클러스터 동작을 나타냅니다.
이유 이벤트가 생성된 이유입니다. 예를 들어 FailedScheduling 또는 CrashLoopBackoff입니다.
message 이벤트를 설명하는 사람이 읽을 수 있는 메시지입니다.
네임스페이스 이벤트가 연결된 Kubernetes 개체의 네임스페이스입니다.
firstSeen 이벤트가 처음 관찰된 시점의 타임스탬프입니다.
lastSeen 이벤트가 마지막으로 관찰된 시점의 타임스탬프입니다.
reportingController 이벤트를 보고한 컨트롤러의 이름입니다. 예들 들어 kubernetes.io/kubelet입니다.
object 이벤트가 연결된 Kubernetes 개체의 이름입니다.

자세한 내용은 공식 Kubernetes 설명서를 참조하세요.

Kubernetes 이벤트 보기

kubectl get events 명령을 사용하여 클러스터의 모든 이벤트를 나열합니다.

클러스터가 이미 만들어지고 사용할 수 있다고 가정하고(문서 필수 구성 요소별) 자격 증명을 가져옵니다( --overwrite-existing kubeconfig 오류를 방지하기 위해 플래그가 설정됨).

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

이제 클러스터의 모든 이벤트를 나열합니다.

kubectl get events

결과:

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
...

먼저 Pod의 이름을 찾은 다음 kubectl describe pod 명령을 사용하여 특정 Pod의 이벤트를 확인합니다.

현재 네임스페이스의 파드들을 나열합니다.

kubectl get pods

결과:

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

<pod-name>을 실제 Pod 이름으로 교체하십시오. 자동화의 경우 목록의 첫 번째 Pod에 대한 예제는 다음과 같습니다.

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

이벤트 관련 문제 해결 모범 사례

관련성에 대한 이벤트 필터링

AKS 클러스터에서는 다양한 네임스페이스와 서비스가 실행 중일 수 있습니다. 개체 유형, 네임스페이스 또는 이유를 기준으로 이벤트를 필터링하면 결과를 가장 관련성이 큰 정보로 좁힐 수 있습니다.

예를 들어 다음 명령을 사용하여 기본 네임스페이스 내에서 이벤트를 필터링할 수 있습니다.

kubectl get events --namespace default

이벤트 알림 자동화

AKS 클러스터의 중요한 이벤트에 적시에 응답하려면 자동화된 알림을 설정합니다. Azure는 Azure Monitor와 같은 모니터링 및 경고 서비스와의 통합을 제공합니다. 특정 이벤트 패턴에 따라 트리거되도록 경고를 구성할 수 있습니다. 이렇게 하면 주의가 필요한 중요한 문제에 대해 즉시 알 수 있습니다.

정기적으로 이벤트 검토

AKS 클러스터의 이벤트를 정기적으로 검토하세요. 이러한 사전 예방적 접근 방식을 통해 추세를 식별하고, 잠재적인 문제를 조기에 파악하고, 에스컬레이션을 방지할 수 있습니다. 이벤트를 최신 상태로 유지함으로써 애플리케이션의 안정성과 성능을 유지할 수 있습니다.

다음 단계

이제 Kubernetes 이벤트를 이해했으므로 Container Insights를 사용하도록 설정하여 모니터링 및 관찰 경험 과정을 계속할 수 있습니다.