Monitoring
✏️ 무엇을 모니터링 하고싶은가?
Node level metrics
- 클러스터의 노드 수
- 얼마나 많은 노드가 정상인지
- CPU, 메모리, 네트워크, 디스크 사용률과 같은 성능 확인
POD level metrics
- POD의 수
- CPU 및 메모리 소비와 같은 각 POD의 성능 메트릭
K8S는 모든 기능을 갖춘 내장 모니터링 Soulution 제공안함.
Opensource for monitoring
- Metrics server
- Prometheus
- Elastic Stack
- DATADOG
- Dynatrace
- Heapster (지금은 Deprecated) → Heapster 슬림버전 = Metric Server
Metrics server
- Kubernetes 클러스터당 하나의 Metrics server 가질 수 있음.
- Metrics server는 각 Kubernetes Node 및 POD 에서 메트릭을 검색함.
- 집계하여 'in Memory' 로 저장함(Disk에 저장하지 않음).
- Metric Server는 과거 성능 데이터를 볼 수 없음.
- 이렇기 때문에 앞부분에서 이야기한 고급 모니터링 솔루션 중 하나에 의존해야 합니다.
POD의 metric 생성 과정
- K8S는 kubelet(각 노드의 에이전트) 실행함.
- K8S API 마스터 서버에서 명령을 받고, Node에서 POD을 실행하는 역할함.
- kubelet cAdvisor 또는 Container cAdvisor 알려진 하위 구성 요소도 포함됨.
cAdvisor
- cAdvisor는 Kubelet의 구성요소임
- cAdvisor는 POD에서 성능 메트릭을 검색하고,
kubelet API를 통해 성능 메트릭을 노출하여, Metric Server에서 사용할 수 있도록 하는 역할임.
minikube를 사용하는 경우
위 명령어를 통해 설치함
위 명령어를 통해 사용량 확인함
Logging
✏️ DOCKER Logging
- event-simulator라는 도커 컨테이너를 실행하고 웹 서버를 시뮬레이션하는 임의의 이벤트를 생성함
- Docker의 경우 이미 app에 의해 standard output으로 event를 생성하고 있다.
docker run -d {container 이름}
docker container를 background 모드로 사용하고 싶다면, -d 옵션을 사용함 => log를 볼 수 없음
docker run -d {container ID}
만약 log 보고 싶다면, 위명령 사용하면됨
📌 Kubernetes Logging
kubectl logs -f {POD 이름}
위 명령을 통해 log 확인 가능 (-f = 라이브로 로그)
- POD은 여러 개의 docker container를 가질 수 있음.
- 'image-processor'라는 컨테이너 추가.
kubectl logs -f {POD 이름} {container 이름}
- 위와 같이 container 이름을 명시 해줘야함
- 그렇지 않으면 이름을 지정하라는 메시지가 표시되어 실패합니다.