본 포스팅은 Udemy Certificated Kubernetes Administrator 강좌를 공부한 내용입니다.
Kubernetes 자체적으로는 완전하게 monitoring과 logging에 대한 솔루션을 제공해 주지 않는다.
Metric-Server, Prometheus, Elastic Stack 등 별도의 솔루션을 이용해 모니터링 시스템을 구축하는 것을 권장한다.
이번에는 Metric-Server를 이용한 간략한 Monitoring과 Logging에 대해 살펴보자.
Monitoring
각 node의 kubelet에 있는 cAdvisor는 docker와 같은 runtime container로부터 container의 cpu/memory 등 metric을 수집한다.
수집된 metric은 Metric-Server에 모여 kubectl 명령어로 node와 pod의 상태를 모니터링할 수 있다.
Metric-Server 설치
$ git clone https://github.com/kodekloudhub/kubernetes-metrics-server.git
$ cd kubernetes-metrics-server/
$ kubectl create -f .
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created
serviceaccount/metrics-server created
deployment.apps/metrics-server created
service/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created
Metric-Server Monitoring
$ kubectl top node
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
master 152m 7% 1261Mi 66%
node01 2000m 100% 939Mi 24%
$ kubectl top pod
NAME CPU(cores) MEMORY(bytes)
elephant 12m 50Mi
lion 869m 1Mi
rabbit 959m 1Mi
Metric-Server가 배포되면 위와 같은 명령어를 이용해 node와 pod의 CPU/Memory 정보를 확인할 수 있다.
위와 같이 사용할 경우 현재의 Metric을 조회할 수 있지만 과거의 Metric과 함께 조회하거나 Metric 기반의 알람 등 Monitoring을 활용하기 위해서는 Prometheus 등의 솔루션을 사용해야 한다.
Logging
Kubernetes Logging은 각 node에서 실행 중인 container의 로그를 조회할 수 있게 해준다.
# <POD_NAME> Pod의 Container 로그 조회
$ kubectl logs <POD_NAME>
# <POD_NAME> Pod의 <CONTAINER_NAME> 로그 조회
$ kubectl logs <POD_NAME> <CONTAINER_NAME>
# <POD_NAME> Pod의 Container 로그 실시간 조회
$ kubectl logs -f <POD_NAME>
docker CLI를 이용해 log를 조회하는 방법과 비슷하다.
Monitoring과 마찬가지로 logging 역시 node에 저장하는 log에 제한이 있다보니 과거의 log까지 저장하기 위해서는 Elastic Search 등의 솔루션을 사용해야 한다.
'Kubernetes > CKA' 카테고리의 다른 글
CKA 준비 (10) - Cluster Upgrade (0) | 2020.06.19 |
---|---|
CKA 준비 (8) - Scheduling 3 (DaemonSet, Static Pod) (0) | 2020.06.16 |
CKA 준비 (7) - Scheduling 2 (Node Selector, Node Affinity) (0) | 2020.06.09 |
CKA 준비 (6) - Scheduling 1 (Manual, taint and toleration) (0) | 2020.06.07 |
CKA 준비 (5) - namespace, service (0) | 2020.06.07 |