해당 스터디는 90DaysOfDevOps
https://github.com/MichaelCade/90DaysOfDevOps
를 기반으로 진행한 내용입니다.
Day 80 - Unlocking K8s Troubleshooting Best Practices with Botkube
쿠버네티스 생태계는 거대하고 복잡하다.
네트워킹, 컨테이너, 배포 전략 등 알아야 할 지식의 양이 방대하여 진입 장벽이 높을 뿐만 아니라, 수많은 CNCF 도구들과 함께 사용되기 때문에 이들을 통합 관리하는 것은 엔지니어에게 큰 부담이다.
특히 팀이 지리적으로 분산된 하이브리드 근무 환경에서 장애가 발생했을 때, Slack이나 Teams 같은 메신저로 파편화된 정보를 공유하며 문제를 해결하는 것은 Context Switching 비용을 발생시키고 대응 속도를 늦춘다.
쿠버네티스 트러블슈팅은 공식적으로 클러스터 내의 문제를 식별하고 해결하는 과정이다.
하지만 이를 좀 더 실천적인 관점에서 정의하자면 "모니터링 + 행동 또는 반응의 결합"이라 할 수 있다.
가장 흔한 에러 중 하나인 OOMKilled(Out Of Memory) 상황을 가정해보자. 전통적인 해결 방식은 다음 5단계를 거친다.
종료된 Pod 식별
메모리 사용량 확인
로그 내 에러 확인
이미지 업데이트
메모리 Limit 증설
이 5단계는 간단해 보이지만, 20개 이상의 클러스터를 운영하거나 업무 시간 외에 발생할 경우, 해결까지 몇 분에서 며칠이 소요될 수 있다.
또한, 일반적인 조직에서는 [개발자 장애 발견 → 티켓 생성 → DevOps 팀 알림 → DevOps 환경 진단 → SRE 팀 호출 → 트러블슈팅 → 상태 업데이트 → 팀 전파]라는 복잡한 과정을 거친다. 이 과정에서 너무 많은 사람과 단계가 개입된다.
DevOps 팀: 인력 부족과 업무 과다에 시달리며, 개발과 운영 사이에서 끊임없는 문맥 전환으로 인한 피로감을 느낀다.
개발자: 앱의 상태만 확인하고 싶은데, 쿠버네티스 심층 지식까지 강요받는 부담을 느낀다.
운영 팀: 보안 리스크와 비용 효율성 때문에 시스템 신뢰성 유지가 최우선 과제라 압박감이 크다.
이러한 문제를 해결하기 위한 5가지 핵심 전략은 다음과 같다.
모니터링과 관측성(Observability) 중앙화: 흩어진 정보를 한곳으로 모은다.
인시던트 대응과 협업 강화: 팀 간 소통을 효율화한다.
피드백 루프 구축: 과거 데이터를 통해 학습하고 개선한다.
Command Execution 간소화: 복잡한 터미널 작업을 줄인다.
관측성 및 전달 프로세스 자동화: 수동 작업을 최소화한다.
Botkube는 협업 중심의 쿠버네티스 트러블슈팅 도구로, 메신저(Slack, Teams, Discord, Mattermost)와 쿠버네티스 클러스터 사이를 연결하는 양방향 에이전트다.
단순 알림 수신을 넘어, 메신저에서 직접 클러스터를 제어하는 것이 특징이다.

모니터링은 단순한 데이터 수신이 아니라 문맥(Context)을 파악하는 것이다.
Watchdog 역할: 클러스터 변경 사항을 실시간으로 감지하여 알린다.
채널별 격리: 개발팀은 개발 관련 알림만, 플랫폼 팀은 인프라 알림만 받도록 채널을 분리하여 피로도를 줄인다.
직접 해결: 알림을 받고 터미널을 켜는 것이 아니라, 슬랙에서 버튼을 누르거나 명령어를 입력해 즉시 문제를 해결한다. 이는 문맥 전환 비용을 획기적으로 줄여준다.

정보 공유: 공유된 채널에서 트러블슈팅이 이루어지므로, 별도의 보고 절차 없이 팀 전체가 상황을 파악할 수 있다.
Audit Logs: 누가 어떤 명령어를 실행했는지 기록된다. 예를 들어 주니어 엔지니어가 반복적인 실수를 한다면, 로그를 통해 근본 원인을 파악하고 교육하여 팀 역량을 높일 수 있다.
반응형 → 주도형: 과거 인시던트 이력을 바탕으로 장애의 전조 증상을 파악하고 사전 대응이 가능해진다.
비전문가를 위한 접근성: 쿠버네티스 전문가가 아니더라도, Botkube가 제공하는 드래그 앤 드롭 UI나 간소화된 명령어를 통해 필요한 조치를 취할 수 있다.
명령어 실행 속도 향상: 복잡한 kubectl 명령어를 일일이 기억할 필요 없이, 채팅창에서 빠르게 실행 가능하다.
가장 강력한 기능은 트러블슈팅 단계의 자동화다. 앞서 언급한 OOMKilled 5단계를 Botkube는 2단계로 단축시킨다.
기존 5단계: 식별 → 확인 → 로그 확인 → 업데이트 → 메모리 증설
Botkube 자동화:
Botkube가 자동으로 파드를 식별하고, 로그와 메모리 사용량을 분석하여 에러 원인을 채팅창에 띄워준다 (1~3단계 자동 수행).
엔지니어는 제공된 정보를 바탕으로 이미지 업데이트 및 메모리 증설(4~5단계)만 수행하면 된다.
MTTR(평균 복구 시간) 단축: 커뮤니케이션 지연을 제거하여 빠른 복구 가능.
운영 효율성 증대: 단일 플랫폼에서 정보 확인 및 조치 가능.
팀 번아웃 감소: 불필요한 문맥 전환과 전문가에 대한 과도한 의존 제거.
장애 감소: 사전 대응을 통해 작은 이슈가 대형 장애로 번지는 것을 방지.
운영(Prod)과 스테이징(Staging) 클러스터를 운영하는 한 고객사는 Botkube의 RBAC(역할 기반 접근 제어) 기능을 활용했다.
슬랙 채널별로 권한을 매핑하여, 특정 채널에서는 조회만 가능하고 비공개 채널에서는 명령 실행이 가능하도록 설정함으로써 보안과 신뢰성을 동시에 확보했다.
쿠버네티스 트러블슈팅에서 가장 중요한 것은 반응적(Reactive) 태도를 버리고 전략적(Strategic)으로 접근하는 것이다.
팀의 리소스와 히스토리를 바탕으로 트러블슈팅 과정을 중앙화하고 자동화해야 한다.
Botkube와 같은 도구는 복잡한 하이브리드 환경에서 팀의 협업 능력을 극대화하고, 더욱 회복탄력성있는 조직을 만드는 데 핵심적인 역할을 한다.