kuber-burner 란?
Kubernetes 클러스터의 성능/부하 테스트와 벤치마크를 위해 만들어진 도구이다.
Red Hat에서 개발했으며, 주로 Openshift 및 Kubernetes 환경의 규모 확장성(Scalability) 검증에 사용된다.
주요 기능
- 워크로드 생성 (Workload Generation)
사전에 정의된 YAML 매니페스트(예- Deployment, DaemonSet, ConfigMap 등)를 원하는 개수만큼 대량으로 생성하여 클러스터에 부하를 준다. - 메트릭 수집 (Metric Collection)
- Prometheus, Openshift Monitoring 스택에서 메트릭을 수집 가능
- 노드/파드 리소스 사용량, API 응답 속도, 스케줄링 지연, Pod 생성/삭제 지연 등을 측정
- 프로파일링 및 보고서
테스트 종료 후 수집된 메트릭을 분석하여 성능 지표(예- 초당 요청 수, 지연시간, 자원 사용량)를 보고 - 자동화 지원
커스텀 CRD를 활용하여 클러스터 내부에서 컨트롤러처럼 동작하거나, CLI로 외부에서 실행할 수도 있음. - 스케일 테스트(Scalability Tests)
- 수천 개 이상의 Pod, Service, ConfigMap 등을 배포해도 안정적으로 동작하는지 확인
- 특정 버전 업그레이드나 커스터마이징 후 클러스터 성능 검증 가능
Kube-burner 설치
#
git clone https://github.com/kube-burner/kube-burner.git
cd kube-burner
# 바이너리 설치(추천) : mac M1
curl -LO https://github.com/kube-burner/kube-burner/releases/download/v1.17.3/kube-burner-V1.17.3-darwin-arm64.tar.gz # mac M
tar -xvf kube-burner-V1.17.3-darwin-arm64.tar.gz
curl -LO https://github.com/kube-burner/kube-burner/releases/download/v1.17.3/kube-burner-V1.17.3-linux-x86_64.tar.gz # Windows
tar -xvf kube-burner-V1.17.3-linux-x86_64.tar.gz
sudo cp kube-burner /usr/local/bin
kube-burner -h
# check-alerts Evaluate alerts for the given time range
# completion Generates completion scripts for bash shell
# destroy Destroy old namespaces labeled with the given UUID.
# health-check Check for Health Status of the cluster
# help Help about any command
# import Import metrics tarball
# index Index kube-burner metrics
# init Launch benchmark
# measure Take measurements for a given set of resources without running workload
# version Print the version number of kube-burner
# 버전 확인 : 혹은 go run cmd/kube-burner/kube-burner.go -h
kube-burner version
Version: 1.17.3

Deployment 1개 (파드 1개) 생성 -> 삭제, jobIterations qps burst 의미 확인
#
cat << EOF > s1-config.yaml
global:
measurements:
- name: none
jobs:
- name: create-deployments
jobType: create
jobIterations: 1 # How many times to execute the job , 해당 job을 5번 반복 실행
qps: 1 # Limit object creation queries per second , 초당 최대 요청 수 (평균 속도 제한) - qps: 10이면 초당 10개 요청
burst: 1 # Maximum burst for throttle , 순간적으로 처리 가능한 요청 최대치 (버퍼) - burst: 20이면 한순간에 최대 20개까지 처리 가능
namespace: kube-burner-test
namespaceLabels: {kube-burner-job: delete-me}
waitWhenFinished: true # false
verifyObjects: false
preLoadImages: true # false
preLoadPeriod: 30s # default 1m
objects:
- objectTemplate: s1-deployment.yaml
replicas: 1
EOF
#
cat << EOF > s1-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-{{ .Iteration}}-{{.Replica}}
labels:
app: test-{{ .Iteration }}-{{.Replica}}
kube-burner-job: delete-me
spec:
replicas: 1
selector:
matchLabels:
app: test-{{ .Iteration}}-{{.Replica}}
template:
metadata:
labels:
app: test-{{ .Iteration}}-{{.Replica}}
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
EOF
# 모니터링 : 터미널, kube-ops-view
watch -d kubectl get ns,pod -A
# 부하 발생 실행 Launch benchmark
kube-burner init -h
kube-burner init -c s1-config.yaml --log-level debug
...
#
kubectl get deploy -A -l kube-burner-job=delete-me
kubectl get pod -A -l kube-burner-job=delete-me
kubectl get ns -l kube-burner-job=delete-me
#
ls kube-burner-*.log
kube-burner-86508d5e-52dc-45de-88ab-d933f48ae0c8.log
cat kube-burner-*.log
# 삭제!
## deployment 는 s1-deployment.yaml 에 metadata.labels 에 추가한 labels 로 지정
## namespace 는 config.yaml 에 job.name 값을 labels 로 지정
cat << EOF > s1-config-delete.yaml
# global:
# measurements:
# - name: none
jobs:
- name: delete-deployments-namespace
qps: 500
burst: 500
namespace: kube-burner-test
jobType: delete
waitWhenFinished: true
objects:
- kind: Deployment
labelSelector: {kube-burner-job: delete-me}
apiVersion: apps/v1
- kind: Namespace
labelSelector: {kube-burner-job: delete-me}
EOF
#
kube-burner init -c s1-config-delete.yaml --log-level debug
jobIterations 는 몇번 반복할것인가? 의 의미이다.
jobIterations: 10으로 변경해서 실행했더니 kube-burner-test pod 가 10개가 생성됐다

그외 다른 옵션의미
qps 는 API 서버에 요청을 보낼 때 초당 몇개의 요청을 허용할 것인가? 의 의미이다.
burst는 qps를 넘었을 경우에 짧은 시간동안 허용할 수 있는 최대 동시 요청량(버스트 트래픽)이다.
종합 동작 예시
jobIterations: 500
qps: 20
burst: 40
- Deployment 500개를 생성하는 테스트 실행
- API 요청은 초당 평균 20개
- 순간적으로 최대 40개까지 요청 가능
- 따라서 "점진적" 또는 "폭발적" 부하 패턴을 제어 가능
'DevOps > cilium' 카테고리의 다른 글
| [Cilium Study] Cilium Security (0) | 2025.09.07 |
|---|---|
| [Cilium Study] Cilium Performance (0) | 2025.08.31 |
| [Cilium Study] Mutual Authentication (0) | 2025.08.23 |
| [Cilium Study] Cilium Service Mesh 3 (0) | 2025.08.20 |
| [Cilium Study] Cilium Service Mesh 2 (1) | 2025.08.20 |