Kubernetes 모니터링이란 무엇인가요?

수출입을 위해 화물선에서 컨테이너 박스 하역 작업을 관리하는 현장 감독자

Kubernetes 모니터링이란 무엇인가요?

Kubernetes 모니터링은 Kubernetes 클러스터 내에서 실행되는 컨테이너화된 애플리케이션의 상태, 성능 및 비용 특성에 관한 데이터를 수집하고 분석하는 프로세스를 의미합니다.

K8s 또는 kube라고도 하는 Kubernetes는 컨테이너화된 애플리케이션의 배포, 관리 및 확장을 예약하고 자동화하기 위한 컨테이너 오케스트레이션 플랫폼입니다. 원래 Google이 설계한 본 프로젝트는 현재 CNCF(Cloud Native Computing Foundation)에서 유지 관리하고 있습니다.

관리자와 사용자는 Kubernetes 클러스터를 모니터링하여 가동 시간, 클러스터 리소스 사용량, 클러스터 구성 요소 간의 상호 작용 등을 추적할 수 있습니다. 모니터링을 통해 리소스 부족, 장애, 시작할 수 없는 파드, 클러스터에 참여할 수 없는 노드와 같은 문제를 신속하게 파악할 수 있습니다.

클라우드 네이티브 마이크로서비스로 제공되는 Kubernetes의 애플리케이션은 서로 통신하는 구성 요소가 훨씬 더 많습니다. 여러 인스턴스와 위치에 분산되어 있는 최신 아키텍처는 모니터링, 경고 및 문제 해결의 일상적인 작업에 복잡성을 더합니다.

또한 컨테이너의 일시적인 특성은 문제 해결 노력에 방해가 될 수 있습니다. 일반적으로 컨테이너는 컨테이너 내에서 실행되는 프로세스가 지속되는 동안만 유지되며, 해당 프로세스가 종료되면 사라집니다. 이는 컨테이너 문제 해결에서 가장 어려운 부분 중 하나입니다. 컨테이너가 종료되거나 대체 노드로 재예약되면 인시던트 대응에 필요한 세부 정보가 더 이상 존재하지 않을 수 있습니다.

Kubernetes에는 클러스터를 모니터링하고 실행 중인 파드 기반으로 경보를 전송하는 클러스터 오퍼레이터가 내장되어 있지만, 오픈 소스 도구와 서드파티 모니터링 솔루션을 함께 활용하면 K8 환경에 대한 온전한 가시성을 확보하는 데 도움이 됩니다.

고속도로 조감도

클라우드에 집중 


AI 시대의 멀티클라우드 설정을 최적화하는 방법에 대한 전문가의 안내가 담긴 주간 Think 뉴스레터를 받아보세요.

Kubernetes 모니터링의 이점

적절한 Kubernetes 모니터링은 애플리케이션 성능의 안정성과 응답성 유지부터 보안 및 규정 준수 강화까지 다양한 이점을 제공합니다.

성능 최적화

CPU 소비, 메모리 사용량, 네트워크 트래픽 및 응답 시간과 같은 메트릭을 추적하고 분석하여 비효율적인 영역을 식별하고, 리소스 할당을 최적화하고, 최적의 성능을 위해 Kubernetes 인프라를 세부적으로 조정할 수 있습니다.

이를 통해 애플리케이션 응답성과 사용자 경험을 향상할 수 있습니다.

효율적인 리소스 사용

CPU 사용량, 메모리 소비 및 네트워크 트래픽과 같은 리소스 사용 메트릭을 모니터링하여 활용도가 낮거나 과도한 Kubernetes 노드를 식별하고, 리소스 할당을 최적화하고, 인프라 확장에 관해 충분한 정보에 입각한 결정을 내릴 수 있습니다.

이를 통해 애플리케이션이 최적의 성능을 발휘하는 데 필요한 리소스를 확보할 수 있으며, 비용 절감이라는 추가적인 이점도 얻을 수 있습니다.

사전 문제 감지

Alerts and Notification은 Kubernetes 문제의 근본적인 원인을 사전에 식별하여 운영 중단이나 가동 중단이 발생하기 전에 해결하는 데 도움이 됩니다.

이를 통해 시스템 안정성이 향상되고, 발생 가능한 문제가 애플리케이션과 사용자에게 미치는 영향이 최소화됩니다.

신속한 문제 해결 및 디버깅

로그, 이벤트와 메트릭을 모니터링하면 파드 고장, 리소스 제약, 네트워킹 문제 또는 애플리케이션 오류와 같은 문제를 신속하게 식별하고 진단할 수 있습니다.

디버깅 프로세스의 속도를 높이면 가동 중단 시간이 단축되고 애플리케이션이 계속 가용 상태로 유지됩니다.

용량 계획 및 확장성

과거 데이터를 분석하고 리소스 사용률 추세를 모니터링하면 향후 리소스 요구 사항을 더 정확하게 예측하고, 더 많은 Kubernetes 리소스가 필요한 시기를 식별하고, 그에 따라 클러스터 확장 계획을 세울 수 있습니다.

그러므로 워크로드 수요 증가가 리소스 부족을 초래하지 않습니다.

보안 및 규정 준수 강화

Kubernetes 로그, 네트워크 트래픽 및 액세스 패턴을 모니터링하면 비정상적인 활동, 잠재적 위반 및 무단 액세스 시도를 쉽게 식별할 수 있습니다.

또한 적절한 보안 제어 및 정책을 마련하고 적극적으로 모니터링되도록 하면 표준 및 규정을 준수하는 데 도움이 됩니다.

모니터링해야 하는 K8 지표

Kubernetes 스택에 대한 온전한 가시성을 확보하려면 지속적으로 생성되고 파괴되며 상호 호출하는 컨테이너에서 텔레메트리 데이터를 수집하는 동시에 Kubernetes 클러스터 자체에서 텔레메트리 데이터를 수집해야 합니다.

클러스터 레벨 모니터링

클러스터 모니터링의 경우 Kubernetes 클러스터의 전반적인 상태를 확인하는 데 도움이 되는 몇 가지 클러스터 레벨 메트릭을 따라야 합니다.

노드 기능: 모든 클러스터 노드가 제대로 작동하고 있는지, 얼마의 용량에서 작동하는지 모니터링하면 클러스터를 실행하는 데 필요한 클라우드 리소스를 파악할 수 있습니다.

노드 가용성: 사용 가능한 클러스터 노드 수를 모니터링하면 어떤 클라우드 리소스에 대해 비용이 지불되고 있는지(Microsoft Azure나 AWS와 같은 클라우드 제공업체를 이용하는 경우)와 클러스터가 어떻게 사용되고 있는지를 파악하는 데 도움이 됩니다.

노드 리소스 사용량: 클러스터 전체의 리소스(메모리, CPU, 대역폭 및 디스크 사용량) 사용 방식을 모니터링하면 클러스터의 노드 수 또는 크기를 늘리거나 줄일지 여부를 결정하는 데 도움이 됩니다.

실행 중인 파드 수: 실행 중인 파드를 모니터링하면 사용 가능한 노드 수가 충분한지 및 노드 장애 발생 시 전체 파드 워크로드를 처리할 수 있는지를 확인할 수 있습니다.

파드 레벨 모니터링

Kubernetes 클러스터 내 개별 파드가 제대로 작동하는지 확인하려면 파드 레벨 모니터링이 필요합니다. 이를 위해서는 세 가지 유형의 메트릭, 즉 Kubernetes 메트릭, 컨테이너 메트릭과 애플리케이션 메트릭을 살펴보아야 합니다.

1. Kubernetes 지표

Kubernetes 메트릭을 모니터링하면 Kubernetes 배포의 모든 파드가 실행 중이고 정상 상태인지 확인할 수 있습니다.

파드 인스턴스 수: 현재 파드에 있는 인스턴스 수가 예상 인스턴스 수에 비해 적으면 클러스터에 리소스가 부족할 수 있습니다.

파드 상태: 파드의 실행 여부 및 대기 중이거나 장애가 있거나 종료된 파드 수를 파악하면 파드의 가용성과 안정성을 파악할 수 있습니다.

파드 재시작: 파드가 재시작되는 횟수를 모니터링하면 파드 내 애플리케이션의 안정성을 파악할 수 있습니다. 재시작이 잦은 경우, 충돌이나 리소스 제약 조건과 같은 근본적인 문제가 원인일 수 있습니다.

CPU 사용량: 파드의 CPU 사용량을 모니터링하면 잠재적인 성능 병목 현상을 파악하고 파드에 충분한 처리 리소스가 있는지 확인할 수 있습니다.

메모리 사용량: 파드의 메모리 사용량을 모니터링하면 애플리케이션의 안정성에 영향을 줄 수 있는 메모리 누수 또는 과도한 메모리 사용을 감지하는 데 도움이 됩니다.

네트워크 사용량: 파드에서 전송/수신된 바이트를 모니터링하면 통신 패턴에 대한 통찰을 얻고 네트워킹 문제를 식별할 수 있습니다.

또한 상태 확인, 네트워크 데이터 및 진행 중인 배포의 진행 상황(예: 이전 버전에서 새 버전으로 변경된 인스턴스 수)도 Kubernetes 메트릭에 포함됩니다.

2. 컨테이너 메트릭

파드 컨테이너 메트릭을 모니터링하면 구성한 리소스 한도에 얼마나 근접했는지 확인할 수 있습니다. 이러한 메트릭을 통해 CrashLoopBackoff에 갇힌 파드를 감지할 수도 있습니다.

CPU 사용량/제한: 실행 중인 컨테이너가 CPU를 어떻게 이용하는지 모니터링하면 리소스 사용량이 많거나 클러스터의 전체 성능에 영향을 미칠 수 있는 병목 현상을 유발하는 컨테이너를 식별할 수 있습니다. CPU 제한 메트릭을 추적하면 컨테이너의 CPU 사용량이 제한되는 이유가 리소스 제약인지, 아니면 잘못된 구성인지를 확인할 수 있습니다.

메모리 사용량: 실행 중인 컨테이너가 메모리를 소비하는 방식을 모니터링하면 컨테이너 안정성 및 전체 시스템 성능에 영향을 줄 수 있는 메모리 누수, 과도한 메모리 사용량 또는 불충분한 메모리 할당과 같은 문제에 주의를 기울일 수 있습니다.

네트워크 트래픽/오류: 패킷 손실 또는 연결 장애와 같은 오류뿐만 아니라 컨테이너의 네트워크 트래픽을 모니터링하면 컨테이너의 통신 패턴과 과도한 네트워크 사용량 또는 예상치 못한 트래픽 급증을 평가하는 데 도움이 됩니다.

3. 애플리케이션 지표
.

애플리케이션 지표 모니터링은 Kubernetes 파드 내에서 실행 중인 애플리케이션의 성능과 가용성을 측정하는 데 도움이 됩니다. 이러한 지표는 일반적으로 Kubernetes 애플리케이션 자체에서 개발되며, 지연 시간, 응답성, 오류율 및 응답 시간과 같은 비즈니스 규칙에 관련됩니다.

AI 아카데미

하이브리드 클라우드로 AI 지원 실현하기

IBM 사고 리더들이 이끄는 이 커리큘럼은 비즈니스 리더들에게 성장을 촉진하는 AI 투자의 우선순위를 정하는 데 필요한 지식을 제공합니다.

Kubernetes 모니터링 모범 사례

다음은 Kubernetes 환경을 성공적으로 모니터링하기 위해 고려해야 할 몇 가지 모범 사례입니다.

Kubernetes DaemonSets 사용: DaemonSets를 사용하면 Kubernetes 환경의 각 노드와 해당 노드의 모든 리소스를 전체 Kubernetes 클러스터에서 모니터링하는 에이전트를 배포할 수 있습니다. Daemon은 호스트가 나타나고 메트릭을 제공할 준비가 되었는지 확인하는 데 도움이 됩니다.

라벨을 스마트하게 활용: 논리적이고 일관적이며 통일된 라벨링 스키마를 만들면 DevOps 팀이 다양한 구성 요소를 더 쉽게 식별하고 Kubernetes 모니터링에서 최대한의 가치를 제공할 수 있습니다.

서비스 검색 사용: Google Kubernetes Engine(GKE)의 서비스 탐색을 사용하면 실행 위치를 모르는 경우에도 애플리케이션을 지속적으로 모니터링할 수 있습니다. 클러스터의 상태를 보다 완벽하게 이해할 수 있도록 메트릭 컬렉션을 이동하는 컨테이너에 맞게 자동으로 조정합니다.

Alerts and Notification 설정: CPU나 메모리 사용률과 같은 중요한 메트릭에 대한 알림을 설정하고 해당 메트릭이 특정 임계값에 도달하면 알림을 받습니다. 지능형 알림 기능을 갖춘 모니터링 툴은 의미 있는 이벤트나 변경 사항에 대해서만 알림을 전송하여 알림의 피로를 최소화합니다.

컨트롤 플레인 요소 모니터링: API 서버, kube-dns, kubelet, kube-proxy, etcd 및 컨트롤러 관리자와 같은 Kubernetes 컨트롤 플레인 요소를 정기적으로 모니터링하면 클러스터 서비스가 원활하게 실행되고 있는지 확인할 수 있습니다.

사용자 경험 모니터링: Kubernetes 플랫폼에서 기본적으로 측정되지는 않지만 사용자 경험을 모니터링하면 클러스터 내부에서 문제가 발견되기 전에 이에 대한 알림을 받을 수 있습니다.

기본 제공 및 오픈 소스 툴 사용: 사용 사례와 관계없이 Kubernetes Dashboard, cAdvisor(Container Advisor), Kube-state-metrics와 같은 기본 제공 Kubernetes 모니터링 툴과 Prometheus, Grafana, Jaeger, Elastic Stack(이전 ELK Stack)을 비롯한 인기 있는 오픈 소스 툴을 활용하세요. 이러한 툴은 배포, 문제 해결 및 모니터링 외에도 데이터 시각화, 다양한 소스로부터 시계열 메트릭 수집 및 저장과 같은 추가 기능을 제공합니다.

SaaS 기반 K8s 모니터링 솔루션 사용: Kubernetes 관리와 인프라 개발을 용이하게 하고, 비용을 절감하고, 정기적인 업데이트를 받으려면 온프레미스 모니터링 시스템 대신 자동화 기능이 내장된 SaaS 기반 모니터링 시스템을 사용하세요.

관련 솔루션
Kubernetes 모니터링 - IBM Instana

전체 Kubernetes 클러스터를 자동으로 관찰, 모니터링 및 수정하여 애플리케이션 성능 및 가용성을 향상합니다.

IBM Instana 살펴보기
클라우드 컨설팅 서비스 

IBM 클라우드 서비스와 컨설팅으로 비즈니스의 민첩성과 성장을 가속화하고 모든 플랫폼에서 애플리케이션을 지속적으로 현대화하세요.

클라우드 컨설팅 서비스 살펴보기
컨테이너 솔루션

보안, 오픈 소스 혁신, 신속한 배포를 지원하는 컨테이너 솔루션으로 컨테이너화된 워크로드를 실행하고 확장하세요.

컨테이너 살펴보기
다음 단계 안내

IBM Instana Observability는 모든 Kubernetes 배포에 대해 노드와 파드(Pod)에서 컨테이너와 애플리케이션에 이르기까지 전체 Kubernetes 애플리케이션 스택을 모니터링하도록 설계된 자동화된 Kubernetes 관측 가능성 및 APM 기능을 제공합니다.

IBM Instana Observability 살펴보기 Instana 활용하기