오픈소스 인사이트
home
오픈소스 기술 동향
home
🚀

K8sGPT 실전 활용: CLI 없이 Prometheus + Grafana로 데이터 시각화하기

6 more properties
지난 글에서는 K8sGPT에 대한 소개와 기본적인 활용법을 다뤘습니다.
이번에는 k8sGPT CLI 명령어를 사용하지 않고, Prometheus와 Grafana를 이용해 데이터를 시각화하는 실전 노하우를 공유합니다!
운영 환경에서 장애가 발생했을 때, 어떻게 시각적으로 문제를 파악할 수 있는지 궁금하셨다면 끝까지 읽어주세요.

1. Prometheus + Grafana 설치 필요 사항

Prometheus를 설치할 때는 아래 옵션을 꼭 추가해야 합니다.
이 설정을 하지 않으면 Grafana에서 화면이 보이지 않습니다.
bashhelm install prometheus prometheus-community/kube-prometheus-stack -n monitoring --set prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false
k8sgpt-operator와 연동하여 정보를 얻기 위한 설정입니다.

2. Kubernetes 시스템 내의 서비스 분석을 위한 Operator 설치

$ helm repo add k8sgpt https://charts.k8sgpt.ai/ "k8sgpt" has been added to your repositories $ helm repo list NAME URL k8sgpt https://charts.k8sgpt.ai/ $ helm repo update Hang tight while we grab the latest from your chart repositories... ...Successfully got an update from the "k8sgpt" chart repository Update Complete. ⎈Happy Helming!⎈ # k8sgpt-operator 설치 시 interplex / grafana Dashboard / serviceMonitor 기능 활성화 합니다. $ helm install k8sgpt k8sgpt/k8sgpt-operator -n k8sgpt-operator-system --create-namespace --set interplex.enabled=true --set grafanaDashboard.enabled=true --set serviceMonitor.enabled=true NAME: release LAST DEPLOYED: Tue Feb 11 01:38:11 2025 NAMESPACE: k8sgpt-system STATUS: deployed REVISION: 1 TEST SUITE: None $ helm ls -n k8sgpt-operator-system NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION k8sgpt k8sgpt-operator-system 1 2025-02-11 01:38:11.148735033 +0000 UTC deployed k8sgpt-operator-0.2.6 0.0.26
Plain Text
복사

3. K8sGPT 서비스 목록 확인

K8sGPT Opeator 서비스가 동작 중이면, 아래와 같은 화면처럼 동작 되어야 합니다.
$ kubectl get all -n k8sgpt-operator-system NAME READY STATUS RESTARTS AGE pod/k8sgpt-interplex-0 1/1 Running 0 116s pod/k8sgpt-k8sgpt-operator-controller-manager-7676dfb9ff-2nbhb 2/2 Running 0 116s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/k8sgpt-interplex-service ClusterIP None <none> 8084/TCP 117s service/k8sgpt-k8sgpt-operat-controller-manager-metrics-service ClusterIP 10.110.120.18 <none> 8443/TCP 117s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/k8sgpt-k8sgpt-operator-controller-manager 1/1 1 1 117s NAME DESIRED CURRENT READY AGE replicaset.apps/k8sgpt-k8sgpt-operator-controller-manager-7676dfb9ff 1 1 1 116s NAME READY AGE statefulset.apps/k8sgpt-interplex 1/1 116s
Plain Text
복사

4. K8sGPT 에 AI 등록에 필요한 Key 및 secret 생성 

# 사전에 생성 한 Cohere API 키 환경 변수 설정 $ export CohereAI_TOKEN="sk...." # Cohere API 키 환경 변수 사용하여 secret 생성 $ kubectl create secret generic k8sgpt-sample-secret --from-literal=cohereai-api-key=$CohereAI_TOKEN -n k8sgpt-operator-system
Plain Text
복사

5. Cohere 를 K8sGPT 에서 사용 할 수 있도록 K8sGTP CRD 생성

kubectl apply -f - << EOF apiVersion: core.k8sgpt.ai/v1alpha1 kind: K8sGPT metadata: name: k8sgpt-sample-test namespace: k8sgpt-operator-system spec: ai: enabled: true # AI 활성화 model: command # AI 버전 backend: cohere # AI 종류 secret: name: k8sgpt-sample-secret # AI Key 가 등록된 Secret key: cohereai-api-key noCache: false version: v0.3.48 # 최신 K8sgpt 버전으로 명시 EOF
Plain Text
복사

6. K8sGPT Operator results 문제 분석 Test

error 부분 확인 시 문제가 되는 부분은 확인은 되나, 별도의 해결 방안은 제공되지 않았습니다.
$ kubectl get results -n k8sgpt-operator-system -o json | jq . { "apiVersion": "v1", "items": [ { "apiVersion": "core.k8sgpt.ai/v1alpha1", "kind": "Result", "metadata": { "creationTimestamp": "2025-02-15T23:57:12Z", "generation": 1, "labels": { "k8sgpts.k8sgpt.ai/backend": "cohere", "k8sgpts.k8sgpt.ai/name": "k8sgpt-sample-test", "k8sgpts.k8sgpt.ai/namespace": "k8sgpt-operator-system" }, "name": "defaultbrokenpod", "namespace": "k8sgpt-operator-system", "resourceVersion": "4328", "uid": "053f287e-41da-402d-ba31-2f68d735cad8" }, "spec": { "backend": "cohere", "details": "", "error": [ # pod error 에 대한 이슈 Log { "text": "Back-off pulling image \"nginx:11111\"" } ], "kind": "Pod", "name": "default/k8sgpt-pod-test", "parentObject": "" }, "status": {} }
Plain Text
복사

7. Prometheus + Grafana 를 통한 K8sGPT 분석 모니터링 확인

아래의 그래프는 K8sgpt-operator 에서 분석을 진행 됩니다.
잘못 된 image Tag, 잘못 기입한 Node 지정 문제 등 문제가 되는 서비스를 순차적으로 생성해 보았습니다.
문제로 감지된 서비스에 대해 0 → 1 → 3 등 숫자로 실시간으로 표시 하는 것을 확인 할 수 있었습니다.
해당 문제가 정확히 어느 서비스 인지, 쉽게 파악하기는 어려웠습니다.

8. 마치며

이슈 발생 시 AI가 장애 원인을 제시해준다는 점은 Kubernetes 사용에 익숙하지 않은 사용자에게 큰 도움이 될 수 있습니다.
하지만 K8sGPT와 연동된 AI의 학습 수준, 어떤 AI를 사용할지에 따라 활용성에는 차이가 있을 수 있습니다.
운영 환경에서 사용하기에는 아직 개선이 필요한 부분이 있으며, 특히 Prometheus 설치 시 옵션 설정 등 시행착오가 있었습니다.
향후 hpa 기능과의 연동 등 추가적인 발전이 기대됩니다.

참조 자료

공식 URL: https://k8sgpt.ai/