Run The Bridge
k8s 8일차 본문
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