Ssoon

[4주차] CHAPTER-16 쿠버네티스 모니터링 도구 본문

Production Kubernetes Online Study

[4주차] CHAPTER-16 쿠버네티스 모니터링 도구

구구달스 2023. 3. 27. 23:01
이정훈님이 집필하신 "24단계 실습으로 정복하는 쿠버네티스" 로 진행하는 CloudNet@ 팀의 PKOS 4주차 정리입니다.

Metric Pod

  ◾ 쿠버네티스 클러스터 내에서 실행 중인 애플리케이션의 성능과 상태를 모니터링하기 위해 사용되는 파드 

  ◾ 쿠버네티스에서 제공하는 Metric Server를 통해 클러스터의 CPU, 메모리, 네트워크 등과 같은 리소스 사용량 정보를 수집하고, 이 정보를 바탕으로 각 파드의 성능과 상태를 측정합니다 

Metric Server

  ◾ 쿠버네티스 클러스터 내에서 실행 중인 애플리케이션의 리소스 사용량 정보를 수집하고, 이 정보를 바탕으로 각 파드의 성능과 상태를 측정하는 서버 

  ◾ 쿠버네티스에서 제공하는 기본 리소스 모니터링 솔루션으로, CPU, 메모리, 네트워크 등과 같은 리소스 사용량 정보를 수집하고 이를 API 서버에서 제공하는 메트릭 데이터에 반영합니다. 이러한 메트릭 데이터는 Kubernetes Dashboar

cAdvisor

  ◾ CPU, 메모리, 디스크, 네트워크 등과 같은 다양한 리소스 사용량 정보를 수집하고, 이 정보를 Prometheus와 같은 모니터링 도구에서 사용할 수 있는 형식으로 노출합니다

  ◾ 쿠버네티스 API 서버와도 통합되어 있으며, Metric Server를 사용하여 각 파드(Pod)의 성능 및 상태 정보를 수집하는 데도 사용됩니다

 

kubectl top => API Server => Metric-Server => cAdvisor

 

metric-server를 이용한 Pod 및 Node의 리소스 사용량 확인

🧿 metric-server 를 설치합니다.

https://github.com/kubernetes-sigs/metrics-server

 

GitHub - kubernetes-sigs/metrics-server: Scalable and efficient source of container resource metrics for Kubernetes built-in aut

Scalable and efficient source of container resource metrics for Kubernetes built-in autoscaling pipelines. - GitHub - kubernetes-sigs/metrics-server: Scalable and efficient source of container reso...

github.com

Pod 의 container가 정상적으로 실행되지 않아 0/1로 표시됩니다.

🧿 log 정보를 확인합니다.

x509 => 인증관련 문제임을 확인할 수 있습니다.

IP SANs 

  ◾ 쿠버네티스 API 서버 인증서의 일부로 사용되는 Subject Alternative Name(SAN)의 유형 중 하나입니다.

  ◾ IP 주소를 인증서의 SAN 필드에 추가하여 쿠버네티스 API 서버가 여러 IP 주소를 가진 노드에서 작동할 수 있도록 지원합니다.

  ◾ 쿠버네티스 API 서버 인증서를 구성할 때 중요한 옵션 중 하나이며, IP SANs가 없으면 API 서버가 다중 IP 주소를 가진 노드에서 작동하지 않을 수 있습니다.

kubelet-insecure-tls 

  ◾ 쿠버네티스(Kubernetes) 클러스터의 각 노드에서 kubelet이 API 서버와 통신할 때 TLS 인증서를 검증하지 않도록 설정하는 옵션입니다.

  ◾ 기본적으로 kubelet은 API 서버와 통신할 때 TLS 인증서를 검증합니다. 그러나 경우에 따라, TLS 인증서를 검증하지 않도록 kubelet-insecure-tls 옵션을 사용해야 할 수 있습니다. API 서버와 kubelet 간의 통신은 암호화되지만, 인증서의 유효성 검증이 이루어지지 않으므로 보안성이 감소할 수 있습니다.

 

🧿 kubelt-insecure-tls 옵션을 추가하기 위해 yaml 파일을 편집합니다.

🧿 수정한 yaml 파일을 적용하면 metric-server가 정상적으로 실행됩니다.

🧿 top 명령어를 조회할 수 있습니다.

kubectl top 

  ◾ 쿠버네티스(Kubernetes) 클러스터에서 실행 중인 파드, 노드, 노드의 컨테이너 등의 CPU 및 메모리 사용량을 실시간으로 모니터링하는 데 사용되는 명령어입니다.

🧿 --sort-by 을 사용하여 메모리를 내림차순으로 정렬할 수 있습니다.

-A = --all-namespace : 전체 네임스페이스

 

🧿 플러그인을 설치하여 스토리지 사용량을 조회할 수 있습니다.

 

명령어 기반 쿠버네티스 모니터링 k9s

K9s

  ◾ 터미널에서 쿠버네티스 클러스터를 모니터링하고 디버깅하는 데 사용됩니다. 

 

https://github.com/derailed/k9s

 

GitHub - derailed/k9s: 🐶 Kubernetes CLI To Manage Your Clusters In Style!

🐶 Kubernetes CLI To Manage Your Clusters In Style! - GitHub - derailed/k9s: 🐶 Kubernetes CLI To Manage Your Clusters In Style!

github.com

🧿 k9s를 설치하고 새로운 터미널에서 k9s정보를 확인합니다.

🧿 k9s 모니터링을 확인하기 위해 잘못된 이미지의 deployment 를 실행합니다.

🧿 k9s를 실행하여 에러가 발생한 Deployment를 확인할 수 있습니다.

🧿 <0> 을 선택하고 엔터를 누르면 자세한 정보를 확인할 수 있습니다.

 

 

📢 k9s의 이벤트 메시지는 최대 1시간 이내의 정보만 표시합니다. 

 

Comments