Run The Bridge

k8s 8일차 본문

Cloud/k8s

k8s 8일차

anfrhrl5555 2021. 8. 19. 15:45
728x90

0. 쿠버네티스 모니터링

  • 쿠버네티스에 앱을 배포하여 운영 단계를 계획하고 있다면 모니터링 시스템 구축이 필요
    • 사용자 요청이 갑작스럽게 몰려서 부하가 발생할 때
    • 인프라 또는 애플리케이션 장애가 발생했을 때
    • 애플리케이션의 일반적인 리소스 사용 패턴을 파악해야 할 때
    • 그 외의 다양한 상황들
  • 쿠버네티스 시스템과 애플리케이션을 모니터링 하기 위해서는 기본적으로 CPU나 메모리 외에도 디스크 사용량, 네트워크 I/O, 초당 요청 수 등 다양한 종류의 메트릭을 확인해야 한다

 

/metrics 경로

 - 모니터링 에이전트와 같은 부류의 도구들은 /metrics 경로를 노출시켜 키-값 쌍으로 구성된 매트릭 데이터를 반환한다.

 - 이러한 인터페이스를 제공하는 서버를 일반적으로 'exporter'라고 부른다

 

 

1. 인프라 수준의 메트릭

  • 노드(호스트) 레벨의 메트릭. 노드에서 사용 중인 FD 수, 디스크 사용량, NIC 패킷 전송량 등

2. 컨테이너 수준의 메트릭

  • 컨테이너별 CPU, 메모리 사용량, 프로세스 상태, 쿠버네티스 포드 상태 등

3. 애플리케이션 수준의 메트릭

  • 애플리케이션 레벨에서 정의하는 메트릭. 마이크로서비스에서 발생하는 트레이싱이나 로직에 종속적인 데이터, 프레임웍에서 제공하는 데이터 등

 

curl로 test해봐도 인증정보가 없어서 403_error가 난다.


1. kube-state-metrics

  • 쿠버네티스 리소스 상태에 관련된 메트릭을 제공하는 애드온
  • 포드 상태(Running, Error, 등), deployment의 replica 수, 등의 데이터 제공
git clone https://github.com/kubernetes/kube-state-metrics.git

cd kube-state-metrics/examples/standard/

kubectl apply -f ./

kubectl run -i --tty --rm debug --image=alicek106/ubuntu:curl bash  # namespace를 명시하지 않아서 오류가 뜬다.

curl -n kube-system kube-state-metrics.kube-system:8080/metrics


2. node-exporter

- 인프라 수준에서의 metric를 제공하는 exporter

- file system, network packet 등과 같은 metric 제공

cd /root/practice/start-docker-kubernetes/chapter14/node-exporter

kubectl apply -f ./

kubectl run -i --tty --rm debug --image=alicek106/ubuntu:curl bash

curl node-exporter.monitoring:9100/metrics


3. 프로메테우스를 활용한 metric 수집

  • 메트릭을 제공하는 애드온이 설치되면 다음은 메트릭을 수집해와서 저장하는 도구가 필요한데 일반적으로 프로메테우스 수집 도구를 많이 사용한다
  • 프로메테우스는 각종 메트릭을 제공하는 애드온에 /metrics 경로로 접근하여 메트릭을 수집하는 역할을 한다

단순 수집기들이 수집하는 정보를 통합으로 저장해준다.

 

git clone https://github.com/prometheus-operator/prometheus-operator.git

cd prometheus-operator/

kubectl apply -f bundle.yaml

kubectl get pod

kubectl get svc

cd /root/practice/start-docker-kubernetes/chapter14/

kubectl apply -f prometheus-simple.yaml

kubectl get pod

웹 서버로 들어갈려면 프로메테우스의 ClusterIP를 NodePort로 열어주는 서비스를 열어야한다.

# vi prometheus-svs.yaml

apiVersion: v1
kind: Service
metadata:
  name: prometheus-svc
spec:
  ports:
  - name: port
    port: 9090
    targetPort: 9090
    nodePort: 30100
  selector:
    app.kubernetes.io/name: prometheus
  type: NodePort

접속 성공


 

728x90

'Cloud > k8s' 카테고리의 다른 글

kubens을 통한 multi-cluster 컨트롤하기  (0) 2022.01.17
kubernetes install guide(v1.18.6)  (0) 2021.12.12
k8s 7일차  (0) 2021.08.18
k8s 6일차  (0) 2021.08.17
docker-registry를 이용해 toyproject k8s에 deployment로 올리기  (0) 2021.08.16
Comments