본문 바로가기

컨퍼런스

24.09.24 컨퍼런스 정리 - k8sgpt


 

GitHub - k8sgpt-ai/k8sgpt: Giving Kubernetes Superpowers to everyone

Giving Kubernetes Superpowers to everyone. Contribute to k8sgpt-ai/k8sgpt development by creating an account on GitHub.

github.com

 

Slack

nav.top { position: relative; } #page_contents > h1 { width: 920px; margin-right: auto; margin-left: auto; } h2, .align_margin { padding-left: 50px; } .card { width: 920px; margin: 0 auto; .card { width: 880px; } } .linux_col { display: none; } .platform_i

k8sgpt.slack.com


k8sgpt 개발 배경

k8sgpt 이전의 트러블슈팅

k8sgpt 이전의 트러블슈팅은 다음과 같음

  1. $ kubectl get po -A 명령 수행, CrashLoopBackOff 발생했네?
  2. $ kubectl describe -n namespace podname 명령 수행하여 이벤트 확인
  3. 이벤트를 분석하여 원인을 찾고, 이를 해결

위 과정에서 각 이벤트가 어떤 오류인지, 어떤 상황에 어떤 리소스를 봐야하는지 숙련된 엔지니어가 아닌 경우 찾기가 쉽지 않음.


k8sgpt 를 사용시?

다음 데모와 같이 $ k8sgpt analyze --explain 명령어로 손쉽게 장애 원인 파악 및 해결 방법을 LLM 에게 물어볼 수 있음.

 


 

k8sgpt 왜 필요한가?

kubernetes는, 현대 인프라의 표준으로 가고있는 상황입니다.

k8s 는 아름다워 보이지만, 내부적으로는 복잡한 문제를 해결할 수 있는 숙련자가 필수적으로 필요합니다.

발표자는 k8s 운영을 아이를 키우는것과 비유해 아이를 낳으면 행복할거라고 생각하지만, 새벽에 우는 아이, 챙겨야하는 많은 일들을 생각하면 마냥 쉽지많은 않은데, k8s 도 이와 비슷하다고 생각한다고 말합니다.

또한, 다양한 리눅스 배포판에서 나타나는 모든 문제를 만날 가능성이 있습니다. k8s 가 다양한 리눅스 OS 위에서 동작하기 때문에 (Rocky, RHEL, Ubuntu …) 역설적으로 더 다양한 이슈와 만나게 되는 일이 잦습니다.

십지어 발표자는 고객사에서 너무 오래된 RHEL 위에 k8s 설치를 진행한 경험이 있는데, 얼마나 오래되었으면 CRI 의 최신 버전 설치가 불가능해 낮은 버전으로 낮추고, 이에 따라 k8s 버전도 낮춰야했던 경험이 있다고 합니다.

마지막으로 팔로업하기엔, 너무나 많은 양의 업데이트가 있습니다. 일례로 kubernetes 1.31 ChangeLog 만 2,000 라인 가량입니다. (k8s 1.31 ChangeLog)

발표자는, 이러한 문제들을 LLM 의 힘으로 해결하고자 k8sgpt 를 개발한다라고 합니다.


k8sgpt 타겟 유저

발표자는 k8s 활용자를 (사용자 / 관리자) 두 그룹으로 나눴습니다.

사용자는, 워크로드를 배포하고, 애플리케이션 단의 트러블슈팅을 하는 영역이며
관리자는, 클러스터를 구축 / 관리하고, 클러스터 단의 트러블슈팅을 하는 영역을 의미합니다.

k8sgpt 는 사용자를 대상으로 interactive Mode 를 제공한다고 합니다. ($ k8sgpt analyze --interactive )

interactive mode 에서는 몇번의 질의에 거쳐 k8s 안의 문제를 해결할 수 있습니다.. 만 시간상의 문제로 발표에서, 깊게 다루지는 않았습니다.

관리자 대상의 기능으로는, k8sgpt Operator, Custom Logic, 익명화 기능을 설명하셨습니다.


k8sgpt 기능 소개

k8sgpt Operator

k8sgpt Operator 는 일반적인 Operator 패턴대로 동작하며

일정 주기마다 동작하는 reconcile 로직으로 타 네임스페이스들에 걸쳐서 배포된 애플리케이션을 감시하고 주기적으로 LLM 에 질의하면서 문제를 보고한다고 합니다.

또한 Prometheus  에 Custom Metric 기능을  활용해 k8sgpt Operator 에서 발생한 문제들이 몇건인지?, 얼마나 지속되어 발생하고 있는지 등을 메트릭형태로 적재한다고 합니다.

Custom Logic

Custom Logic 기능은 세일즈포스라는 기업에서 k8sgpt VoC 항목으로 기능 추가를 요청하여 구현한 기능이라고 합니다.

전통적인 Rule Base 의 Custom Logic 을 통해 문제 발생을 탐지하면, 알럿을 보내는 기능입니다.

k8s 외부의 문제를 감시할 수 없는 k8sgpt 의 한계를 보완하고자 한다고 하지..만, 아직 Alert Manager/Grafana 등에 비하면 걸음마라고 합니다.

익명화 기능

Pod Name 과 같이 고객사의 민감한 정보를 LLM에 직접 질의하면 보안상 좋지 않기 때문에 Name 을 익명화하여 질의하는 기능이 있다고 합니다. k8sgpt 가 한번 익명화 작업을 거쳐서 LLM 에 전달한다고 하는 방식이라고 하네요.


질의응답 내용

  • Q) False Positive 응답 (장애가 맞다고하는데(Positive) 오탐(False)인 경우) 이 많은지?
  • A) LLM 성능에 따라 다른데, Ollama 의 경우 많음. OpenAI 요즘 나온 모델의 경우 거의 없음
  • Q) RAG 나 프롬프트 엔지니어링 가능한지?
  • A) 프롬프트는 현재 불가능, RAG 는 가능하지만 최신 LLM 보다 성능이 떨어졌음.
  • Q) 사용했던 모델중 가장 괜찮았던 모델은?
  • A) GPT Version 4 가 가장 좋았음