쿠버네티스 환경에서 시스템 부하를 생성하고 모니터링하기 위한 테스트 도구입니다.
이 프로젝트는 쿠버네티스 클러스터에서 다양한 유형의 시스템 부하를 생성하고 관리하기 위한 도구입니다. CPU와 메모리 부하 생성 기능이 구현되어 있으며, 향후 네트워크 부하 테스트 기능이 추가될 예정입니다.
- CPU 부하 생성 및 제어
- 메모리 부하 생성 및 제어
- 실시간 상태 모니터링
- 웹 기반 사용자 인터페이스
- 쿠버네티스 네이티브 배포
graph TD
A[Frontend<br/> React App] -->|HTTP| B[Backend Service<br/> :8080]
B -->|Redis Pub| R[Redis<br/> :6379]
R -->|Redis Sub| C[CPU Generator<br/>]
R -->|Redis Sub| M[Memory Generator<br/>]
C -->|Execute| D[stress-ng<br/>CPU Load]
M -->|Execute| E[stress-ng<br/>Memory Load]
subgraph Kubernetes Cluster
subgraph Frontend Pod
A
end
subgraph Backend Pod
B
R
end
subgraph CPU Generator Pods
C
D
end
subgraph Memory Generator Pods
M
E
end
end
style A fill:#f9f,stroke:#333,stroke-width:2px
style B fill:#bbf,stroke:#333,stroke-width:2px
style R fill:#fdd,stroke:#333,stroke-width:2px
style C fill:#dfd,stroke:#333,stroke-width:2px
style M fill:#dfd,stroke:#333,stroke-width:2px
style D fill:#fdd,stroke:#333,stroke-width:2px
style E fill:#fdd,stroke:#333,stroke-width:2px
시스템은 네 개의 주요 컴포넌트로 구성되어 있습니다:
-
Frontend (React)
- 사용자 인터페이스 제공
- 부하 테스트 제어
- 실시간 상태 표시
-
Backend (Go/Gin)
- API 엔드포인트 제공
- Redis를 통한 메시지 발행
- CORS 및 보안 처리
-
CPU Generator (Go)
- Redis 구독을 통한 명령 수신
- stress-ng를 통한 CPU 부하 생성
- 프로세스 관리
-
Memory Generator (Go)
- Redis 구독을 통한 명령 수신
- stress-ng를 통한 메모리 부하 생성
- 프로세스 관리
- Frontend: React, TypeScript, Axios
- Backend: Go 1.22, Gin Framework
- Infrastructure: Kubernetes
- Load Generation: stress-ng
- Message Broker: Redis
- Kubernetes 클러스터
- kubectl CLI 도구
- 도커 레지스트리 접근 권한
- 네임스페이스 생성 및 리소스 배포:
kubectl apply -f manifest.yaml- 서비스 상태 확인:
kubectl get all -n load-tester- Frontend 서비스의 External IP 확인:
kubectl get svc frontend -n load-tester- 웹 브라우저에서 접속하여 사용:
- CPU 부하 테스트 시작/중지
- 메모리 부하 테스트 시작/중지
- 상태 모니터링
각 컴포넌트의 리소스 요구사항은 다음과 같습니다:
- Frontend: CPU 100m, Memory 64Mi
- Backend: CPU 100m, Memory 64Mi
- Redis: CPU 100m, Memory 64Mi
- CPU Generator: CPU 1000m, Memory 128Mi
- Memory Generator: CPU 250m, Memory 1280Mi
- 네트워크 부하 테스트 기능
- 상세 모니터링 대시보드
- 테스트 시나리오 저장 및 재사용
일반적인 문제 해결 방법:
- 파드 상태 확인:
kubectl get pods -n load-tester- 로그 확인:
kubectl logs -f deployment/[component-name] -n load-tester- Redis 모니터링:
kubectl exec -it deployment/backend -c redis -n load-tester -- redis-cli monitor