<p style="text-align:justify;">최근 ChatGPT에 대한 관심이 뜨겁습니다. ChatGPT는 단순 개발부터 보안, 업무 자동화 등 다양한 분야에 적용되고 있으며, 이를 더 잘 활용하기 위한 방법 또한 많은 관심을 받고 있습니다. 이번 글에서는 GPT 기술을 활용한 쿠버네티스 관리 방법에 대해 알아보겠습니다.</p><div class="page-break" style="page-break-after:always;"><span style="display:none;"> </span></div><h3 style="text-align:justify;"><strong>GPT와 쿠버네티스</strong></h3><p style="text-align:justify;">우선 요즘 핫한 GPT(Generative Pre-trained Transformer)는 대규모 자연어 처리 인공지능 모델입니다. GPT 기술은 최근 몇 년 동안 자연어 처리 분야에서 많은 관심을 받았는데요. 주로 자연어 생성, 번역, 요약, 질문-응답 등 다양한 자연어 처리 작업에 사용되며, 이를 위해 트랜스포머 모델을 기반으로 한 다양한 아키텍처가 제안되고 있습니다. 트랜스포머 모델은 기존의 신경망 모델의 한계를 극복한 자연어 처리 모델로, GPT는 이 트랜스포머 모델의 아키텍처를 사용하여 사전 학습된 언어 모델입니다.</p><p style="text-align:justify;"> </p><p style="text-align:justify;">이러한 GPT는 다양한 분야에 활용할 수 있는데, 쿠버네티스의 모니터링과 트러블슈팅과 같은 운영 작업에도 사용될 수 있습니다. 예를 들어, 쿠버네티스 클러스터에서 작동하는 파드의 로그를 모니터링하고, 구동 중인 애플리케이션 장애를 진단하는 데 사용되고, 의심되는 이슈를 나열하여 이를 해결하기 위한 아이디어를 제공해 줍니다.</p><p style="text-align:justify;"> </p><p style="text-align:justify;">또한 운영 중인 쿠버네티스 클러스터를 모니터링하여 관련 로그를 수집하는 기존 기능에 ChatGPT 기능을 더할 수 있습니다. 모니터링으로 수집한 내용의 구문(context)을 분석하여 클러스터의 문제를 찾아내고, 해결 방법을 챗봇 형태로 제공하는 것이 GPT를 통한 쿠버네티스 관리의 대표적인 방법입니다.</p><p style="text-align:justify;"> </p><p style="text-align:justify;"> </p><h3 style="text-align:justify;"><strong>K8SGPT란?</strong></h3><p style="text-align:justify;">다음으로 K8SGPT에 대해 살펴보겠습니다. K8SGPT는 쿠버네티스와 GPT 기술을 결합하여 생성한 오픈소스 프로젝트인데요. 쿠버네티스 클러스터의 정보를 스캐닝하여 이슈를 발견하고, 해당 이슈를 분석하여 결과와 원인, 해결 방법 등을 간단한 문장으로 제공해 줍니다.</p><p style="text-align:justify;"> </p><figure class="image image_resized" style="width:80%;"><img src="https://yozm.wishket.com/media/news/1990/image4.png" alt="K8SGPT 프로젝트"><figcaption>K8SGPT 프로젝트 <출처:<a href="https://github.com/k8sgpt-ai/k8sgpt"><u>K8SGPT</u></a>></figcaption></figure><p style="text-align:justify;"> </p><p style="text-align:justify;">K8SGPT의 본래 목적은 수많은 쿠버네티스 클러스터를 관리하는 SRE(Site Reliable Engineering) 팀의 경험을 코드화하고, AI를 통해 프로세스를 자동화하는 것입니다. SRE 팀은 소프트웨어 엔지니어링, IT 운영, 시스템 관리 등 다양한 분야의 전문가들로 구성되어 있으며, 서비스의 안정성을 유지하고 개선하기 위해 노력합니다. </p><p style="text-align:justify;"> </p><p style="text-align:justify;">여기엔 시스템 안정성을 유지하는 것뿐만 아니라 운영 자동화, 시스템 확장, 성능 분석과 재해 복구와 같은 역할도 포함됩니다. SRE 팀이 위와 같은 컨테이너 기술을 사용하여 쿠버네티스를 관리하는데 K8SGPT를 사용할 수 있습니다.</p><p style="text-align:justify;"> </p><p style="text-align:justify;">하지만 아직 K8SGPT는 초기 단계라서, 쿠버네티스 엔지니어가 잠깐 시간을 투자하면 얻을 수 있는 단순한 결과를 제공하는 수준입니다. 하지만 앞으로 GPT와 함께 발전하면 많은 SRE 엔지니어의 수고를 덜어줄 만큼 수준 높은 결과를 제공할 것으로 기대됩니다. 이 과정을 통해 앞서 말한 K8SGPT의 본래 목적을 달성할 수 있을 것입니다. 또한 K8SGPT는 오픈소스 프로젝트로 다양한 사용자들이 쿠버네티스와 관련된 자신만의 자연어 처리 시스템을 개발하고, 이를 커뮤니티에 공유하는 등 활발한 참여가 가능합니다. 이러한 과정을 통해 빠른 속도로 발전할 수 있을 것입니다.</p><p style="text-align:justify;"> </p><p style="text-align:justify;"> </p><h3 style="text-align:justify;"><strong>K8SGPT를 활용한 쿠버네티스 클러스터 분석</strong></h3><p style="text-align:justify;">지금부턴 K8SGPT를 설치하고, 쿠버네티스에 활용하는 방법을 알아보겠습니다. 우선 K8SGPT 공식 홈페이지의<a href="https://github.com/k8sgpt-ai/k8sgpt"><u>설치 가이드</u></a>를 참고해 설치를 진행합니다. 쿠버네티스를 사용하기 위한 명령 줄 도구인 kubectl이 설치된 환경(로컬 PC, 가상 머신, 클라우드 인스턴스 등)에 K8SGPT를 설치합니다. 이 기능을 사용하기 위해선<a href="https://beta.openai.com/account/api-keys"><u>Open API</u></a>에 접속해 자신만의 API 키를 발급받아야 합니다.</p><p style="text-align:justify;"> </p><figure class="image image_resized" style="width:100%;"><img src="https://yozm.wishket.com/media/news/1990/image6.png" alt="Open API 키 발급받기"><figcaption>Open API 키 발급받기 <출처: <a href="https://platform.openai.com/account/api-keys"><u>OpenAI API Key</u></a>></figcaption></figure><p style="text-align:justify;"> </p><p style="text-align:justify;">K8SGPT 설치 및 API 키 설정을 완료했다면, K8SGPT를 활용해 클러스터 분석을 진행하기 위해 다음과 같이 kubectl 명령을 사용하여 올바르지 않은 파드 2개를 생성합니다.</p><p style="text-align:justify;"> </p><pre><code class="language-plaintext">#존재하지 않는 Nginx 이미지 버전(100)을 사용하여 파드 생성 시도 # kubectl run my-nginx --image=nginx:100 pod/my-nginx created #충분하지 않는 매개 변수만으로 MySQL 파드 생성 시도 # kubectl run mysql --image=mysql:latest pod/mysql created</code></pre><p style="text-align:justify;"> </p><p style="text-align:justify;">현재 네임스페이스상에 존재하는 모든 파드의 상태를 점검해 보기 위해 “Kubectl get pods” 명령어를 실행합니다. 결과를 보면 위에서 생성된 두 개의 파드(my-nginx, mysql)가 정상적으로 실행되지 않고 있습니다.</p><p style="text-align:justify;"> </p><figure class="image image_resized" style="width:100%;"><img src="https://yozm.wishket.com/media/news/1990/image1.png" alt="K8SGPT의 파드 상태 점검"><figcaption>K8SGPT의 파드 상태 점검 <출처: 작가></figcaption></figure><p style="text-align:justify;"> </p><p style="text-align:justify;">이제 K8SGPT 명령을 통해 파드에 어떤 문제가 있는지 분석을 요청하고, 한국어로 해결 방법을 받아보겠습니다. </p><p style="text-align:justify;"> </p><p style="text-align:justify;">아래와 같이 명령을 실행하고 답변을 보면, my-nginx 파드의 경우 Nginx 100 버전의 이미지를 가져올 때 문제가 있다고 출력합니다. 즉, 이미지가 잘못되었거나 네트워크에 문제가 생겨 이미지를 가져오지 못했을 수도 있다고 알려줍니다. 쿠버네티스 관리자는 이를 통해 파드 생성 시 올바르지 않은 이미지 버전을 사용해서 문제가 생겼다고 인지할 수 있고, 올바른 버전의 파드를 새롭게 생성해야 한다는 것을 알 수 있습니다.</p><p style="text-align:justify;"> </p><figure class="image image_resized" style="width:100%;"><img src="https://yozm.wishket.com/media/news/1990/image3.png" alt="K8SGPT의 파드 분석 결과"><figcaption>K8SGPT의 파드 분석 결과 1 <출처: 작가></figcaption></figure><p style="text-align:justify;"> </p><p style="text-align:justify;">다음으로 아래 답변을 보면, MySQL 파드는 컨테이너가 제대로 시작되지 않아 컨테이너를 5분마다 다시 시작하고 있다는 문제점을 찾아냈고, 컨테이너 로그를 확인하여 오류를 파악하라는 해결 방법을 제공합니다.</p><p style="text-align:justify;"> </p><figure class="image image_resized" style="width:100%;"><img src="https://yozm.wishket.com/media/news/1990/image5.png" alt="K8SGPT의 파드 분석 결과"><figcaption>K8SGPT의 파드 분석 결과 2 <출처: 작가></figcaption></figure><p style="text-align:justify;"> </p><p style="text-align:justify;">제안받은 해결 방법을 통해 해당 파드의 로그에서 에러 부분을 찾아보겠습니다.</p><p style="text-align:justify;"> </p><figure class="image image_resized" style="width:100%;"><img src="https://yozm.wishket.com/media/news/1990/image2.png" alt="MySQL 파드의 로그 확인 결과"><figcaption>MySQL 파드의 로그 확인 결과 <출처: 작가></figcaption></figure><p style="text-align:justify;"> </p><p style="text-align:justify;">파드 생성 시에 필요한 옵션인 MySQL 비밀번호 환경 변수가 지정되지 않았다는 것을 알 수 있는데요. 이제 쿠버네티스 관리자는 MySQL 파드를 새롭게 생성할 때, 계정 정보를 지정하지 않는 실수를 하지 않을 것입니다.</p><p style="text-align:justify;"> </p><figure class="image image_resized" style="width:100%;"><img src="https://yozm.wishket.com/media/news/1990/image7.jpg" alt="업무 자동화 효율성"><figcaption><출처: freepik></figcaption></figure><p style="text-align:justify;"> </p><h3 style="text-align:justify;"><strong>업무 자동화로 효율성 높이기</strong></h3><p style="text-align:justify;">두 가지 예제를 통해 살펴본 것처럼 K8SGPT를 활용하면, 파드 정보와 쿠버네티스 클러스터에서 구동되는 오브젝트들의 상황과 문제를 이해하는 데 도움이 될 수 있습니다. 문제의 근본 원인을 찾기 위해 내부 로그를 사용하거나, 쿠버네티스의 기본적인 트러블슈팅 방법을 제안하기도 합니다. 이를 통해 쿠버네티스 관리자를 비롯한 SRE팀, 데브옵스팀, 개발팀, 인프라팀 등에 자동화된 서비스를 제공할 수 있습니다.</p><p style="text-align:justify;"> </p><p style="text-align:justify;">K8SGPT는 GPT 기술을 활용한 업무 자동화의 한 가지 예시고, 더 많은 오픈 소스들이 GPT를 비롯한 AI 기술을 탑재하고 있습니다. ChatGPT를 도입한 대화형 AI는 업무 자동화 분야에서 발전 가능성이 큽니다. 이는 고객 상담이나, 주문 처리, 예약 관리, 지식 데이터베이스 등 기존 데이터를 활용한 반복적인 업무에서 인간의 개입을 줄이고 업무 효율성을 높일 수 있습니다.</p><p style="text-align:justify;"> </p><p style="text-align:justify;"> </p><h3 style="text-align:justify;"><strong>앞으로 어떤 준비가 필요할까?</strong></h3><p style="text-align:justify;">지금까지 K8SGPT를 활용한 쿠버네티스 클러스터 분석 사례에 대해 살펴봤습니다. 이처럼 ChatGPT를 활용한 업무 자동화를 위해, 먼저 ChatGPT 모델을 학습시키기 위한 데이터 셋과 학습 알고리즘 개발이 필요합니다. </p><p style="text-align:justify;"> </p><p style="text-align:justify;">또한 기업이 소프트웨어를 설계할 때, AI 시스템이 기업의 업무 프로세스를 이해하고, 해당 업무를 대화형으로 수행할 수 있도록 설계하는 것이 중요해질 것입니다. 특히 데이터 보안과 개인정보 보호에 대한 이슈를 고려하여, ChatGPT를 활용한 업무 자동화가 안정적으로 운영될 수 있도록 준비해야 합니다.</p><p style="text-align:justify;"> </p><p style="text-align:justify;"><strong>글</strong> 테크유람</p><p style="text-align:justify;"><strong>편집</strong> 오신엽 객원 에디터</p><p style="text-align:justify;"> </p><p style="text-align:center;"><span style="color:#999999;">요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.</span></p>