
모니터링을 위한 웹 기반 UI인 쿠버네티스 관리 대시보드와 Prometheus에 대해서 알아보자.
쿠버네티스 클러스터의 상태를 웹 브라우저 기반 UI로 시각화하고 제어할 수 있는 공식 툴
# `kubernetes-dashboard` 네임스페이스에 Dashboard의 Deployment, Service, ConfigMap 설치
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.6.1/aio/deploy/recommended.yaml
kubectl get all -n kubernetes-dashboard # 설치 확인
# CluterIP로 배포된 서비스를 외부에서도 접근 가능하도록 NodePort로 수정
kubectl edit service kubernetes-dashboard -n kubernetes-dashboard
# kubernetes-dashboard service
spec:
type: NodePort
ports:
- port: 443
targetPort: 8443
nodePort: 30001 # Any Port (30000~32767)
~/.kube/config 파일 같은 클러스터 접속 설정 파일을 업로드해서 로그인하는 방식이다.cluster-admin으로 설정한다.kubectl -n kubernetes-dashboard create token [ServiceAccount_NAME]# ServiceAccount 생성
kubectl create serviceaccount [ServiceAccount_NAME] -n kubernetes-dashboard
# ClusterRoleBinding 생성
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: [ClusterRoleBinding_NAME]
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin # 관리 범위에 따라 설정
subjects:
- kind: ServiceAccount
name: [ServiceAccount_NAME]
namespace: kubernetes-dashboard
# Secret 생성 If you want to manage in Long-term
apiVersion: v1
kind: Secret
metadata:
name: [Secret_NAME_Connected_To_ServiceAccount]
namespace: kubernetes-dashboard
annotations:
kubernetes.io/service-account.name: [ServiceAccount_NAME]
type: kubernetes.io/service-account-token
create token 방식은 토큰이 쿠버네티스 API 서버에서 임시 JWT 발급하기 때문에, 장기간 사용하려면 Secret 기반 토큰을 사용해야 한다.kubectl -n kubernetes-dashboard describe secret [Secret_NAME_Connected_To_ServiceAccount]
단순 상태 표시를 넘어 메트릭 기반 모니터링과 '사용자' 계정 관리 기능을 위해 Prometheus를 사용한다.
오픈소스 모니터링 및 경고 도구로, 시계열 데이터베이스와 강력한 쿼리 언어(PromQL)를 사용하여 메트릭을 수집하고 분석한다.
node-exporter, kube-state-metrics, cadvisor)kubernetes_sd_config가 Prometheus 설정에서 쿠버네티스 클러스터 내의 리소스들을 자동으로 감지해서 타겟으로 등록한다.Helm으로 손쉽게 kube-prometheus-stack을 설치하는 것이 간편하고 유용하다. (Helm에 대해서는 추후 다룰 것이다.)
kube-prometheus-stack은 쿠버네티스 클러스터에서 Prometheus 기반 모니터링 시스템을 한 번에 설치할 수 있는 Helm 차트 모음이다.# helm repo에 프로메테우스 커뮤니티 helm-chart를 등록
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
# 등록된 repo 정보를 업데이트
helm repo update
# 모니터링을 위한 네임스페이스 생성
kubectl create namespace monitoring
# 프로메테우스 & 그라파나를 설치
helm install prometheus prometheus-community/kube-prometheus-stack --namespace monitoring
# 외부에서 접근 가능하도록 NodePort로 변경 or 포트포워딩 using kubectl port-forward
kubectl edit service -n monitoring prometheus-grafana
다양한 메트릭 소스로부터 데이터를 받아 시각화하는 오픈소스 대시보드 플랫폼