Chaos Lab — 프로젝트 개요
프로젝트명: chaos-lab
목적: Kubernetes 환경에 애플리케이션을 배포하고, Chaos Mesh로 장애를 주입하여 서비스 영향과 복구 흐름, 관측성 개선 결과를 확인하는 실험 프로젝트
1. 프로젝트 소개
chaos-lab은 Kubernetes 클러스터에 podinfo 애플리케이션을 배포하고, Chaos Mesh를 사용해 여러 장애 상황을 주입한 뒤 서비스에 어떤 영향이 발생하는지 관찰한 프로젝트다.
실험에서는 k6로 일정한 트래픽을 발생시키고, Prometheus와 Grafana를 통해 latency, error rate, Ready Pod 수, HPA 동작, CPU 사용률, 네트워크 지표를 확인했다. 또한 PrometheusRule과 Alertmanager를 사용해 주요 장애 상황이 Discord 알림으로 전달되는지도 검증했다.
이 프로젝트의 핵심은 장애를 단순히 주입하는 것이 아니라, 장애 발생 전후의 지표를 비교하고, 필요한 경우 대시보드나 alert rule을 개선한 뒤 다시 검증하는 것이다.
2. 환경 구성
구성 요소 | 내용 |
플랫폼 | Kubernetes 로컬 클러스터 |
대상 애플리케이션 | podinfo |
진입점 | NGINX Ingress Controller |
Load Balancer | MetalLB |
CNI | Cilium |
장애 주입 도구 | Chaos Mesh |
부하 생성 도구 | k6 |
메트릭 수집 | Prometheus |
시각화 | Grafana |
알림 | Alertmanager → Discord |
GitOps | ArgoCD |
3. 실험 방식
모든 실험은 동일한 흐름으로 진행했다.
1.
정상 상태에서 Baseline을 측정한다.
2.
Chaos Mesh로 장애를 주입한다.
3.
k6로 동일한 부하를 발생시킨다.
4.
Grafana에서 주요 지표 변화를 확인한다.
5.
실험 결과를 Baseline과 비교한다.
6.
필요한 경우 dashboard, alert rule, ingress 설정을 개선한다.
7.
같은 조건으로 재실험하여 개선 효과를 확인한다.
4. 공통 관찰 지표
영역 | 관찰 지표 |
트래픽 | request rate, success count, fail count |
오류 | failed rate, 5xx error rate, checks rate |
지연 | p50, p90, p95, p99, max latency |
Pod 상태 | Ready Pod 수, Pod phase, restart count |
리소스 | CPU usage, CPU throttling, memory usage |
스케일링 | HPA current/desired replicas |
네트워크 | receive/transmit, packet drops, packet errors |
Ingress | ingress latency p95/p99 |
알림 | alert firing/resolved, Discord notification |
5. 실험 목록
실험 | 내용 |
Baseline | 정상 상태 기준 지표 측정 |
Pod Failure | Pod 장애 주입 후 Ready Pod, restart, alert 동작 확인 |
Network Delay | 네트워크 지연 주입 후 latency 변화와 Ingress latency alert 검증 |
CPU Stress | CPU 부하 주입 후 HPA scale-out과 CPU 관련 alert 검증 |
Network Loss | 패킷 손실 주입 후 실패율과 tail latency 변화, Ingress retry 설정 검증 |
Complex Failure | Pod Failure와 Network Delay를 함께 주입한 복합 장애 관찰 |
6. 주요 개선 내용
실험 과정에서 다음 개선을 적용했다.
영역 | 개선 내용 |
Pod Failure | Pod restart / Ready Pod 감소 감지를 위한 alert rule 개선 |
CPU Stress | CPU usage, CPU throttling, HPA max replica alert 추가 |
Network Loss | Ingress retry/timeout 설정을 조정하고 결과 비교 |
Network Delay | Ingress latency 패널과 high latency alert 추가 |
Dashboard | 장애 시나리오별 핵심 지표를 한 화면에서 볼 수 있도록 Grafana dashboard 개선 |