EKS 노드 모니터링 에이전트에서 노드 상태 문제 감지 - Amazon EKS

이 페이지 개선에 도움 주기

이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.

EKS 노드 모니터링 에이전트에서 노드 상태 문제 감지

이 주제에서는 EKS 노드 모니터링 에이전트에서 감지한 노드 상태 문제, 이러한 문제가 노드 조건 또는 이벤트로 표시되는 방법, 노드 모니터링 에이전트를 구성하는 방법을 자세히 설명합니다.

EKS 노드 모니터링 에이전트는 EKS 자동 노드 복구와 함께 또는 이 기능 없이도 사용할 수 있습니다. EKS 자동 노드 복구에 대한 자세한 내용은 EKS 클러스터에서 노드 자동 복구 섹션을 참조하세요.

EKS 노드 모니터링 에이전트의 소스 코드는 GitHub의 aws/eks-node-monitoring-agent 리포지토리에 게시되어 있습니다.

노드 상태 문제

다음 표에서는 노드 모니터링 에이전트가 감지할 수 있는 노드 상태 문제를 설명합니다. 두 가지 문제가 있습니다.

  • 조건-인스턴스 교체 또는 재부팅과 같은 문제 해결 작업이 필요한 터미널 문제입니다. 자동 복구가 활성화되면 Amazon EKS는 노드 교체 또는 재부팅으로 복구 작업을 수행합니다. 자세한 내용은 노드 조건 섹션을 참조하세요.

  • 이벤트-일시적인 문제 또는 최적이 아닌 노드 구성입니다. 자동 복구 작업은 수행되지 않습니다. 자세한 내용은 노드 이벤트 섹션을 참조하세요.

AcceleratedHardware 노드 상태 문제

다음 표에서 심각도가 '조건'인 문제에 대한 모니터링 조건은 AcceleratedHardwareReady입니다. 아래 표의 이벤트 및 조건은 NVIDIA 및 Neuron 관련 노드 상태 문제에 대한 항목입니다.

이름 심각도 설명 복구 작업

DCGMDiagnosticFailure

조건

DCGM 활성 진단 테스트 제품군의 테스트 사례가 실패했습니다.

없음

DCGMError

조건

DCGM 호스트 프로세스에 대한 연결이 끊어졌거나 해당 연결을 설정할 수 없습니다.

없음

DCGMFieldError[Code]

Event

DCGM이 필드 식별자를 통해 GPU 성능 저하를 감지했습니다.

없음

DCGMHealthCode[Code]

Event

DCGM 상태 확인이 치명적이지 않은 방식으로 실패했습니다.

없음

DCGMHealthCode[Code]

조건

DCGM 상태 확인이 치명적인 방식으로 실패했습니다.

없음

NeuronDMAError

조건

DMA 엔진에서 복구할 수 없는 오류가 발생했습니다.

Replace

NeuronHBMUncorrectableError

조건

HBM에서 수정할 수 없는 오류가 발생하여 잘못된 결과가 발생했습니다.

Replace

NeuronNCUncorrectableError

조건

Neuron Core의 수정 불가능한 메모리 오류가 감지되었습니다.

Replace

NeuronSRAMUncorrectableError

조건

온칩 SRAM에 패리티 오류가 발생하여 잘못된 결과가 발생했습니다.

Replace

NvidiaDeviceCountMismatch

Event

NVML을 통해 표시되는 GPU 수가 파일 시스템의 NVIDIA 디바이스 수와 일치하지 않습니다.

없음

NvidiaDoubleBitError

조건

GPU 드라이버에서 더블 비트 오류가 발생했습니다.

Replace

NvidiaNCCLError

Event

NVIDIA Collective Communications 라이브러리(libnccl)에서 segfault가 발생했습니다.

없음

NvidiaNVLinkError

조건

GPU 드라이버에서 NVLink 오류가 보고되었습니다.

Replace

NvidiaPCIeError

Event

전송 오류를 복구하기 위해 PCIe 재생이 트리거되었습니다.

없음

NvidiaPageRetirement

Event

GPU 드라이버가 사용 중지를 위해 메모리 페이지를 표시했습니다. 동일한 주소에 단일 더블 비트 오류가 있거나 두 개의 단일 비트 오류가 발생하는 경우 이 문제가 발생할 수 있습니다.

없음

NvidiaPowerError

Event

GPU의 전력 사용률이 허용된 임계치를 위반했습니다.

없음

NvidiaThermalError

Event

GPU의 열 상태가 허용된 임계치를 위반했습니다.

없음

NvidiaXID[Code]Error

조건

심각한 GPU 오류가 발생했습니다.

교체 또는 재부팅

NvidiaXID[Code]Warning

Event

심각하지 않은 GPU 오류가 발생했습니다.

없음

NVIDIA XID 오류 코드

노드 모니터링 에이전트는 GPU 커널 로그에서 NVIDIA XID 오류를 감지합니다. XID 오류는 다음 두 가지 카테고리로 구분됩니다.

  • 잘 알려진 XID 코드 - 활성화된 경우 노드 조건(AcceleratedHardwareReady=False)을 설정하고 자동 복구를 트리거하는 심각한 오류입니다. 이유 코드 형식은 NvidiaXID[Code]Error입니다. EKS 노드 모니터링 에이전트가 감지하는 잘 알려진 XID 코드는 복구 작업이 필요한 NVIDIA XID 코드의 전체 목록을 나타내지 않을 수 있습니다.

  • 알 수 없는 XID 코드 - Kubernetes 이벤트로만 로깅됩니다. 자동 복구를 트리거하지 않습니다. 이유 코드 형식은 NvidiaXID[Code]Warning입니다. 알 수 없는 XID 오류를 조사하려면 dmesg | grep -i nvrm을 사용하여 커널 로그를 검토합니다.

XID 오류에 대한 자세한 내용은 NVIDIA GPU 배포 및 관리 설명서Xid Errors를 참조하세요. 개별 XID 메시지에 대한 자세한 내용은 NVIDIA GPU 배포 및 관리 설명서Understanding Xid Messages를 참조하세요.

다음 표에는 잘 알려진 XID 코드, 해당 의미 및 활성화된 경우 기본 노드 복구 작업이 나열되어 있습니다.

XID 코드 설명 복구 작업

13

그래픽 엔진 예외 - 일반적으로 소프트웨어 문제 또는 드라이버 버그로 인해 라생한 GPU 그래픽 엔진 오류가 발생했습니다.

재부팅

31

GPU 메모리 페이지 장애 - 애플리케이션이 매핑되지 않았거나 액세스할 수 없는 GPU 메모리에 액세스하려고 시도했습니다.

재부팅

48

더블 비트 ECC 오류 - GPU 메모리에서 수정 불가능한 더블 비트 오류가 발생했으며, 이는 잠재적 하드웨어 성능 저하를 나타냅니다.

재부팅

63

GPU 메모리 다시 매핑 이벤트 - GPU 드라이버가 감지된 오류로 인해 GPU 메모리의 일부를 다시 매핑했습니다. 이는 종종 복구 가능합니다.

재부팅

64

GPU 메모리 다시 매핑 실패 - GPU가 결함이 있는 메모리를 다시 매핑할 수 없으며, 이는 하드웨어 문제를 나타냅니다.

재부팅

74

NVLink 오류 - GPU 간 고속 NVLink 상호 연결에서 오류가 발생했습니다.

Replace

79

GPU가 버스에서 빠짐 - PCIe를 통해 GPU에 더 이상 액세스할 수 없으며, 이는 일반적으로 하드웨어 장애 또는 전원 문제를 나타냅니다.

Replace

94

격리된 메모리 오류 - 메모리 오류가 발생했지만 격리되어 다른 애플리케이션에 영향을 미치지 않았습니다.

재부팅

95

격리되지 않은 메모리 오류 - 다른 애플리케이션 또는 시스템 메모리에 영향을 미칠 수 있는 메모리 오류가 발생했습니다.

재부팅

119

GSP RPC 제한 시간 - GPU 시스템 프로세서와의 통신이 잠재적으로 펌웨어 문제로 인해 제한 시간을 초과했습니다.

Replace

120

GSP 오류 - GPU 시스템 프로세서에서 오류가 발생했습니다.

Replace

121

C2C 오류 - 칩 간 상호 연결(다중 다이 GPU에서 사용됨)에서 오류가 발생했습니다.

Replace

140

ECC 복구되지 않음 오류 - ECC 오류가 격리 상태에서 해제되어 데이터가 손상되었을 수 있습니다.

Replace

GPU 상태와 관련된 현재 노드 조건을 보려면 다음 명령을 실행합니다.

kubectl get nodes -o custom-columns='NAME:.metadata.name,ACCELERATOR_READY:.status.conditions[?(@.type=="AcceleratedHardwareReady")].status,REASON:.status.conditions[?(@.type=="AcceleratedHardwareReady")].reason'

클러스터에서 XID 관련 이벤트를 보려면 다음 명령 중 하나를 실행합니다.

kubectl get events | grep -i "NvidiaXID"

ContainerRuntime 노드 상태 문제

다음 표에서 심각도가 '조건'인 문제에 대한 모니터링 조건은 ContainerRuntimeReady입니다.

이름 심각도 설명 복구 작업

ContainerRuntimeFailed

Event

컨테이너 런타임이 컨테이너를 생성하지 못했습니다. 반복적으로 발생하는 경우 보고된 문제와 관련이 있을 수 있습니다.

없음

DeprecatedContainerdConfiguration

Event

사용 중단된 이미지 매니페스트 버전 2, 스키마 1을 사용하는 컨테이너 이미지인 스키마가 최근 containerd를 통해 노드로 풀링되었습니다.

없음

KubeletFailed

Event

kubelet이 실패 상태가 되었습니다.

없음

LivenessProbeFailures

Event

활성 프로브 장애가 감지되었습니다. 반복해서 발생하는 경우 애플리케이션 코드 문제 또는 불충분한 제한 시간 값을 나타낼 수 있습니다.

없음

PodStuckTerminating

조건

포드가 과도한 시간 동안 종료되지 않거나 중단되었습니다. 이는 포드 상태 진행을 방지하는 CRI 오류로 인해 발생할 수 있습니다.

Replace

ReadinessProbeFailures

Event

준비 상태 프로브 장애가 감지되었습니다. 반복적으로 발생하는 경우 애플리케이션 코드 문제 또는 불충분한 제한 시간 값을 나타낼 수 있습니다.

없음

[Name]RepeatedRestart

Event

시스템 장치가 자주 다시 시작됩니다.

없음

ServiceFailedToStart

Event

systemd 단위를 시작하지 못했습니다.

없음

커널 노드 상태 문제

다음 표에서 심각도가 '조건'인 문제에 대한 모니터링 조건은 KernelReady입니다.

이름 심각도 설명 복구 작업

AppBlocked

Event

일반적으로 입력 또는 출력에서 차단되어 일정 예약에서 장시간 동안 작업이 차단되었습니다.

없음

AppCrash

Event

노드의 애플리케이션이 충돌했습니다.

없음

ApproachingKernelPidMax

Event

프로세스 수가 현재 kernel.pid_max 설정당 사용 가능한 최대 PID 수에 근접하고 있습니다. 이 값을 초과하면 더 이상 프로세스를 시작할 수 없습니다.

없음

ApproachingMaxOpenFiles

Event

현재 커널 설정을 고려할 때 열려 있는 파일의 수가 가능한 최대 수에 근접하고 있으며, 그 이후에는 새 파일을 열지 못합니다.

없음

ConntrackExceededKernel

Event

연결 추적이 커널의 최댓값을 초과했으며 새 연결을 설정할 수 없어 패킷 손실이 발생할 수 있습니다.

없음

ExcessiveZombieProcesses

Event

완전히 회수할 수 없는 프로세스가 많은 수로 누적되고 이는 애플리케이션 문제를 나타내며 시스템 프로세스 제한에 도달할 수 있습니다.

없음

ForkFailedOutOfPIDs

조건

시스템이 프로세스 ID 또는 메모리를 벗어났기 때문에 포크 또는 실행 직접 호출이 실패했습니다. 이는 좀비 프로세스 또는 물리적 메모리 소진으로 인해 발생할 수 있습니다.

Replace

KernelBug

Event

Linux 커널 자체에서 커널 버그가 감지 및 보고되었지만, 이는 CPU 또는 메모리 사용량이 높은 노드로 인해 발생할 수 있으며 이벤트 처리가 지연될 수 있습니다.

없음

LargeEnvironment

Event

이 프로세스의 환경 변수 수는 예상보다 많으며, 이는 enableServiceLinks가 true로 설정된 많은 서비스에서 발생할 수 있습니다. 이로 인해 성능 문제가 발생할 수 있습니다.

없음

RapidCron

Event

cron 작업이 이 노드에서 5분 간격보다 빠르게 실행되고 있어 작업이 상당한 리소스를 소비하면 성능에 영향을 줄 수 있습니다.

없음

SoftLockup

Event

CPU가 지정된 시간 동안 중지되었습니다.

없음

네트워킹 노드 상태 문제

다음 표에서 심각도가 '조건'인 문제에 대한 모니터링 조건은 NetworkingReady입니다.

이름 심각도 설명 복구 작업

BandwidthInExceeded

Event

인바운드 집계 대역폭이 인스턴스의 최댓값을 초과하여 패킷이 대기열에 추가되거나 손실되었습니다.

없음

BandwidthOutExceeded

Event

아웃바운드 집계 대역폭이 인스턴스의 최댓값을 초과하여 패킷이 대기열에 추가되거나 손실되었습니다.

없음

ConntrackExceeded

Event

연결 추적이 인스턴스의 최댓값을 초과했으며 새 연결을 설정할 수 없어 패킷 손실이 발생할 수 있습니다.

없음

EFAErrorMetric

Event

EFA 드라이버 지표는 성능이 저하된 인터페이스가 있음을 보여줍니다.

없음

IPAMDInconsistentState

Event

디스크의 IPAMD 체크포인트 상태는 컨테이너 런타임의 IP를 반영하지 않습니다.

없음

IPAMDNoIPs

Event

IPAMD에 IP 주소가 없습니다.

없음

IPAMDNotReady

조건

IPAMD가 API 서버에 연결되지 않습니다.

Replace

IPAMDNotRunning

조건

Amazon VPC CNI 프로세스가 실행 중인 것으로 확인되지 않았습니다.

Replace

IPAMDRepeatedlyRestart

Event

IPAMD 서비스에서 여러 번 다시 시작되었습니다.

없음

InterfaceNotRunning

조건

이 인터페이스가 실행 중이 아니거나 네트워크 문제가 있는 것 같습니다.

Replace

InterfaceNotUp

조건

이 인터페이스가 작동하지 않거나 네트워크 문제가 있는 것 같습니다.

Replace

KubeProxyNotReady

Event

Kube-proxy가 리소스를 감시하거나 나열하지 못했습니다.

없음

LinkLocalExceeded

Event

로컬 프록시 서비스에 대한 트래픽의 PPS가 네트워크 인터페이스의 최댓값을 초과하여 패킷이 손실되었습니다.

없음

MACAddressPolicyMisconfigured

Event

systemd-networkd 링크 구성의 MACAddressPolicy 값이 잘못되었습니다.

없음

MissingDefaultRoutes

Event

기본 라우팅 규칙이 누락되었습니다.

없음

MissingIPRoutes

Event

포드 IP에 대한 경로가 누락되었습니다.

없음

MissingIPRules

Event

포드 IP에 대한 규칙이 누락되었습니다.

없음

MissingLoopbackInterface

조건

루프백 인터페이스가 이 인스턴스에서 누락되어 로컬 연결에 따라 서비스가 실패하게 됩니다.

Replace

NetworkSysctl

Event

이 노드의 네트워크 sysctl 설정이 잘못되었을 수 있습니다.

없음

PPSExceeded

Event

양방향 PPS가 인스턴스의 최댓값을 초과하여 패킷이 대기열에 추가되거나 손실되었습니다.

없음

PortConflict

Event

포드가 hostPort를 사용하는 경우 호스트의 이미 바인딩된 포트를 재정의하는 iptables 규칙을 작성할 수 있으므로 API 서버가 kubelet에 액세스하지 못할 수 있습니다.

없음

UnexpectedRejectRule

Event

예상치 못한 REJECT 또는 DROP 규칙이 iptables에서 발견되어 예상 트래픽을 차단할 수 있습니다.

없음

스토리지 노드 상태 문제

다음 표에서 심각도가 '조건'인 문제에 대한 모니터링 조건은 StorageReady입니다.

이름 심각도 설명 복구 작업

EBSInstanceIOPSExceeded

Event

인스턴스에 대한 최대 IOPS를 초과했습니다.

없음

EBSInstanceThroughputExceeded

Event

인스턴스에 대한 최대 처리량을 초과했습니다.

없음

EBSVolumeIOPSExceeded

Event

특정 EBS 볼륨에 대한 최대 IOPS를 초과했습니다.

없음

EBSVolumeThroughputExceeded

Event

특정 Amazon EBS 볼륨에 대한 최대 처리량을 초과했습니다.

없음

EtcHostsMountFailed

Event

kubelet-container 작업 중 /var/lib/kubelet/pods를 다시 탑재하는 사용자 데이터로 인해 kubelet에서 생성한 /etc/hosts를 탑재하지 못했습니다.

없음

IODelays

Event

프로세스에서 입력 또는 출력 지연이 감지되었으며, 이는 과도한 경우 입력-출력 프로비저닝이 부족할 수 있음을 나타냅니다.

없음

KubeletDiskUsageSlow

Event

kubelet이 파일 시스템에 액세스하려고 시도하는 동안 느린 디스크 사용량을 보고합니다. 이는 디스크 입력-출력 부족 또는 파일 시스템 문제를 나타낼 수 있습니다.

없음

XFSSmallAverageClusterSize

Event

XFS Average Cluster 크기는 작으며 이는 과도한 여유 공간 조각화를 나타냅니다. 이 경우 사용 가능한 inode 또는 여유 공간에도 불구하고 파일이 생성되지 않을 수 있습니다.

없음

노드 모니터링 에이전트 구성

EKS 노드 모니터링 에이전트는 DaemonSet로 배포됩니다. EKS 추가 기능으로 배포하는 경우 다음 구성 값으로 설치를 사용자 지정할 수 있습니다. 기본 구성은 EKS 노드 모니터링 에이전트 헬름 차트를 참조하세요.

구성 옵션 설명

monitoringAgent.resources.requests.cpu

모니터링 에이전트에 대한 CPU 리소스 요청입니다.

monitoringAgent.resources.requests.memory

모니터링 에이전트에 대한 메모리 리소스 요청입니다.

monitoringAgent.resources.limits.cpu

모니터링 에이전트에 대한 CPU 리소스 제한입니다.

monitoringAgent.resources.limits.memory

모니터링 에이전트에 대한 메모리 리소스 제한입니다.

monitoringAgent.tolerations

테인트된 노드에서 모니터링 에이전트를 예약하기 위한 허용 오차입니다.

monitoringAgent.additionalArgs

모니터링 에이전트에 전달할 추가 명령줄 인수입니다.

참고

EKS 추가 기능 또는 헬름 설치를 사용하여 hostname-overrideverbositymonitoringAgent.additionalArgs로 구성할 수 있습니다. 현재 EKS 추가 기능 또는 헬름 설치에서 추가 인수를 통해 노드 모니터링 에이전트의 probe-address(8002) 또는 metrics-address(8003)를 사용자 지정할 수 없습니다.

노드 모니터링 에이전트에는 NVIDIA GPU를 모니터링하기 위한 NVIDIA 데이터 센터 GPU 관리자(DCGM) 서버 구성 요소(nv-hostengine)가 포함되어 있습니다. 이 구성 요소는 에이전트의 헬름 차트에서 nodeAffinity에 표시된 대로 NVIDIA GPU 인스턴스 유형인 노드에서만 실행됩니다. EKS 노드 모니터링 에이전트와 함께 기존 NVIDIA DCGM 설치를 사용할 수 없습니다. 이 기능이 필요한 경우 EKS 로드맵 GitHub 문제 2763에 대한 피드백을 제공하세요.

EKS 노드 모니터링 에이전트를 EKS 추가 기능으로 배포하는 경우 다음 구성 값으로 NVIDIA DCGM 설치를 사용자 지정할 수 있습니다.

구성 옵션 설명

dcgmAgent.resources.requests.cpu

DCGM 에이전트에 대한 CPU 리소스 요청입니다.

dcgmAgent.resources.requests.memory

DCGM 에이전트에 대한 메모리 리소스 요청입니다.

dcgmAgent.resources.limits.cpu

DCGM 에이전트에 대한 CPU 리소스 제한입니다.

dcgmAgent.resources.limits.memory

DCGM 에이전트에 대한 메모리 리소스 제한입니다.

dcgmAgent.tolerations

테인트된 노드에서 DCGM 에이전트를 예약하기 위한 허용 오차입니다.

다음 AWS CLI 명령을 사용하여 EKS 노드 모니터링 에이전트 EKS 추가 기능의 버전 및 스키마에 대한 유용한 정보를 얻을 수 있습니다.

Kubernetes 버전의 최신 에이전트 추가 기능 버전을 가져옵니다. 1.35를 Kubernetes 버전으로 바꿉니다.

aws eks describe-addon-versions \ --addon-name eks-node-monitoring-agent \ --kubernetes-version 1.35 \ --query='addons[].addonVersions[].addonVersion'

EKS 추가 기능에서 지원되는 에이전트 추가 기능 스키마를 가져옵니다. v1.5.1-eksbuild.1을 에이전트 버전으로 바꿉니다.

aws eks describe-addon-configuration \ --addon-name eks-node-monitoring-agent \ --addon-version v1.5.1-eksbuild.1