Cloudnet Cilium 7주차 스터디를 진행하며 정리한 글입니다.
실습 환경 준비
kind 클러스터를 생성하고, kube-ops-view, metrics-server, kube-prometheus-stack을 설치합니다.
Kube-burner
kube-burner는 Go로 작성된 벤치마킹 툴로, 대규모 리소스 생성/삭제와 Prometheus 기반 메트릭 수집을 지원합니다.
https://github.com/kube-burner/kube-burner
GitHub - kube-burner/kube-burner: Kubernetes performance and scale test orchestration framework written in golang
Kubernetes performance and scale test orchestration framework written in golang - kube-burner/kube-burner
github.com
kube-burner 특징
- 대규모 리소스 테스트 : Deployment, Pod 등을 원하는 만큼 생성/삭제 가능
- Prometheus 연동 : 성능 메트릭 자동 수집 및 인덱싱
- Measurements & Alerting : 특정 조건에 따른 성능 측정/알람
- Golang 기반 : 공식 client-go 라이브러리 사용
먼저 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
> sudo cp kube-burner /usr/local/bin
> kube-burner -h
Kube-burner 🔥
Tool aimed at stressing a kubernetes cluster by creating or deleting lots of objects.
Usage:
kube-burner [command]
Available Commands:
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
Flags:
-h, --help help for kube-burner
--log-level string Allowed values: debug, info, warn, error, fatal (default "info")
Use "kube-burner [command] --help" for more information about a command.
첫 번째 시나리오는 deployment 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 -c s1-config.yaml --log-level debug
time="2025-08-31 02:25:00" level=info msg="🔥 Starting kube-burner (1.17.3@917540ff45a89386bb25de45af9b96c9fc360e93) with UUID a93f7e08-4017-4e11-a094-453a8a683eac" file="job.go:91"
time="2025-08-31 02:25:00" level=warning msg="Measurement [none] is not supported" file="factory.go:101"
time="2025-08-31 02:25:00" level=debug msg="job.MaxWaitTimeout is zero in create-deployments, override by timeout: 4h0m0s" file="job.go:361"
time="2025-08-31 02:25:00" level=info msg="QPS: 1" file="job.go:371"
time="2025-08-31 02:25:00" level=info msg="Burst: 1" file="job.go:378"
time="2025-08-31 02:25:00" level=debug msg="Preparing create job: create-deployments" file="create.go:46"
time="2025-08-31 02:25:00" level=debug msg="Rendering template: s1-deployment.yaml" file="create.go:52"
time="2025-08-31 02:25:00" level=info msg="Job create-deployments: 1 iterations with 1 Deployment replicas" file="create.go:84"
time="2025-08-31 02:25:00" level=info msg="Pre-load: images from job create-deployments" file="pre_load.go:73"
time="2025-08-31 02:25:00" level=debug msg="Created namespace: preload-kube-burner" file="namespaces.go:55"
time="2025-08-31 02:25:00" level=info msg="Pre-load: Creating DaemonSet using images [nginx:alpine] in namespace preload-kube-burner" file="pre_load.go:195"
time="2025-08-31 02:25:00" level=info msg="Pre-load: Sleeping for 30s" file="pre_load.go:86"
time="2025-08-31 02:25:30" level=info msg="Deleting 1 namespaces with label: kube-burner-preload=true" file="namespaces.go:67"
time="2025-08-31 02:25:30" level=debug msg="Waiting for 1 namespaces labeled with kube-burner-preload=true to be deleted" file="namespaces.go:90"
time="2025-08-31 02:25:31" level=debug msg="Waiting for 1 namespaces labeled with kube-burner-preload=true to be deleted" file="namespaces.go:90"
time="2025-08-31 02:25:32" level=debug msg="Waiting for 1 namespaces labeled with kube-burner-preload=true to be deleted" file="namespaces.go:90"
time="2025-08-31 02:25:33" level=debug msg="Waiting for 1 namespaces labeled with kube-burner-preload=true to be deleted" file="namespaces.go:90"
time="2025-08-31 02:25:34" level=debug msg="Waiting for 1 namespaces labeled with kube-burner-preload=true to be deleted" file="namespaces.go:90"
time="2025-08-31 02:25:35" level=debug msg="Waiting for 1 namespaces labeled with kube-burner-preload=true to be deleted" file="namespaces.go:90"
time="2025-08-31 02:25:36" level=info msg="Triggering job: create-deployments" file="job.go:122"
time="2025-08-31 02:25:36" level=info msg="0/1 iterations completed" file="create.go:119"
time="2025-08-31 02:25:36" level=debug msg="Creating object replicas from iteration 0" file="create.go:122"
time="2025-08-31 02:25:37" level=info msg="Namespace kube-burner-test-0 already exists" file="namespaces.go:44"
time="2025-08-31 02:25:38" level=error msg="Deployment/deployment-0-1 in namespace kube-burner-test-0 already exists" file="create.go:269"
time="2025-08-31 02:25:38" level=info msg="Waiting up to 4h0m0s for actions to be completed" file="create.go:169"
time="2025-08-31 02:25:39" level=info msg="Actions in namespace kube-burner-test-0 completed" file="waiters.go:74"
time="2025-08-31 02:25:39" level=info msg="Job create-deployments took 3s" file="job.go:191"
time="2025-08-31 02:25:39" level=info msg="Finished execution with UUID: a93f7e08-4017-4e11-a094-453a8a683eac" file="job.go:264"
time="2025-08-31 02:25:39" level=info msg="👋 Exiting kube-burner a93f7e08-4017-4e11-a094-453a8a683eac" file="kube-burner.go:90"
Every 2.0s: kubectl get ns,pod -A
NAME STATUS AGE
namespace/default Active 12m
namespace/kube-node-lease Active 12m
namespace/kube-public Active 12m
namespace/kube-system Active 12m
namespace/local-path-storage Active 12m
namespace/monitoring Active 9m18s
namespace/preload-kube-burner Active 15s # 생성
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system pod/coredns-674b8bbfcf-fxfgv 1/1 Running 0 12m
kube-system pod/coredns-674b8bbfcf-wmfjl 1/1 Running 0 12m
kube-system pod/etcd-myk8s-control-plane 1/1 Running 0 12m
kube-system pod/kindnet-9xtnc 1/1 Running 0 12m
kube-system pod/kube-apiserver-myk8s-control-plane 1/1 Running 0 12m
kube-system pod/kube-controller-manager-myk8s-control-plane 1/1 Running 0 12m
> kubectl get deploy -A -l kube-burner-job=delete-me
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
kube-burner-test-0 deployment-0-1 1/1 1 1 4m45s
> kubectl get pod -A -l kube-burner-job=delete-me
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-burner-test-0 deployment-0-1-57c74b55f5-wf7kq 1/1 Running 0 5m13s
> kubectl get ns -l kube-burner-job=delete-me
NAME STATUS AGE
kube-burner-test-0 Active 5m31s
# 삭제!
## 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
time="2025-08-31 02:30:44" level=info msg="🔥 Starting kube-burner (1.17.3@917540ff45a89386bb25de45af9b96c9fc360e93) with UUID f78e5ced-86fd-45a5-a313-1f33d8271bff" file="job.go:91"
time="2025-08-31 02:30:44" level=debug msg="job.MaxWaitTimeout is zero in delete-deployments-namespace, override by timeout: 4h0m0s" file="job.go:361"
time="2025-08-31 02:30:44" level=info msg="QPS: 500" file="job.go:371"
time="2025-08-31 02:30:44" level=info msg="Burst: 500" file="job.go:378"
time="2025-08-31 02:30:44" level=debug msg="Preparing delete job: delete-deployments-namespace" file="delete.go:33"
time="2025-08-31 02:30:44" level=debug msg="Job delete-deployments-namespace: delete Deployment with selector kube-burner-job=delete-me" file="delete.go:45"
time="2025-08-31 02:30:44" level=debug msg="Job delete-deployments-namespace: delete Namespace with selector kube-burner-job=delete-me" file="delete.go:45"
time="2025-08-31 02:30:44" level=info msg="Triggering job: delete-deployments-namespace" file="job.go:122"
time="2025-08-31 02:30:44" level=info msg="Found 1 deployments with selector kube-burner-job=delete-me; patching them" file="utils.go:207"
time="2025-08-31 02:30:44" level=debug msg="Removing Deployment/deployment-0-1 from namespace kube-burner-test-0" file="delete.go:55"
time="2025-08-31 02:30:44" level=info msg="Found 1 namespaces with selector kube-burner-job=delete-me; patching them" file="utils.go:207"
time="2025-08-31 02:30:44" level=debug msg="Removing Namespace/kube-burner-test-0" file="delete.go:58"
time="2025-08-31 02:30:44" level=debug msg="Waiting for 1 namespaces labeled with kube-burner-job=delete-me to be deleted" file="delete.go:79"
time="2025-08-31 02:30:46" level=debug msg="Waiting for 1 namespaces labeled with kube-burner-job=delete-me to be deleted" file="delete.go:79"
time="2025-08-31 02:30:48" level=debug msg="Waiting for 1 namespaces labeled with kube-burner-job=delete-me to be deleted" file="delete.go:79"
time="2025-08-31 02:30:50" level=info msg="Job delete-deployments-namespace took 6s" file="job.go:191"
time="2025-08-31 02:30:50" level=info msg="Finished execution with UUID: f78e5ced-86fd-45a5-a313-1f33d8271bff" file="job.go:264"
time="2025-08-31 02:30:50" level=info msg="👋 Exiting kube-burner f78e5ced-86fd-45a5-a313-1f33d8271bff" file="kube-burner.go:90"
jobIterations, qps, burst 의미는 다음과 같습니다.
- jobIterations: job 반복 횟수 (ex: 5 → Deployment 5개 생성)
- qps: 초당 평균 요청 수 (쿼리 속도 제한)
- burst: 순간적으로 처리 가능한 최대 요청 수 (버퍼)
이 값의 의미를 확인하기 위해 다음 3가지 상황을 테스트해보겠습니다.
1) jobIterations: 10, qps: 1, burst: 10 → 초당 1개씩, 순간 최대 10개 가능
> cat << EOF > s1-config.yaml
global:
measurements:
- name: none
jobs:
- name: create-deployments
jobType: create
jobIterations: 10 # How many times to execute the job , 해당 job을 5번 반복 실행
qps: 1 # Limit object creation queries per second , 초당 최대 요청 수 (평균 속도 제한) - qps: 10이면 초당 10개 요청
burst: 10 # 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
# watch로 모니터링 (기존)
Every 2.0s: kubectl get ns,pod -A
NAME STATUS AGE
namespace/default Active 27m
namespace/kube-node-lease Active 27m
namespace/kube-public Active 27m
namespace/kube-system Active 27m
namespace/local-path-storage Active 27m
namespace/monitoring Active 24m
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system pod/coredns-674b8bbfcf-fxfgv 1/1 Running 0 27m
kube-system pod/coredns-674b8bbfcf-wmfjl 1/1 Running 0 27m
kube-system pod/etcd-myk8s-control-plane 1/1 Running 0 27m
kube-system pod/kindnet-9xtnc 1/1 Running 0 27m
kube-system pod/kube-apiserver-myk8s-control-plane 1/1 Running 0 27m
kube-system pod/kube-controller-manager-myk8s-control-plane 1/1 Running 0 27m
kube-system pod/kube-ops-view-6658c477d4-849tw 1/1 Running 0 26m
# watch로 모니터링 (테스트)
Every 2.0s: kubectl get ns,pod -A
NAME STATUS AGE
namespace/default Active 30m
namespace/kube-burner-test-0 Active 94s
namespace/kube-burner-test-1 Active 94s
namespace/kube-burner-test-2 Active 94s
namespace/kube-burner-test-3 Active 94s
namespace/kube-burner-test-4 Active 94s
namespace/kube-burner-test-5 Active 94s
namespace/kube-burner-test-6 Active 94s
namespace/kube-burner-test-7 Active 94s
namespace/kube-burner-test-8 Active 94s
namespace/kube-burner-test-9 Active 93s
namespace/kube-node-lease Active 30m
namespace/kube-public Active 30m
namespace/kube-system Active 30m
namespace/local-path-storage Active 30m
namespace/monitoring Active 27m
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-burner-test-0 pod/deployment-0-1-ff8bf794f-jw8bm 1/1 Running 0 94s
kube-burner-test-1 pod/deployment-1-1-6595689b5-45bpg 1/1 Running 0 94s
kube-burner-test-2 pod/deployment-2-1-5fcbd74777-hdd9m 1/1 Running 0 94s
kube-burner-test-3 pod/deployment-3-1-5554575bc7-6l475 1/1 Running 0 94s
kube-burner-test-4 pod/deployment-4-1-6459f575df-rdrrk 1/1 Running 0 94s
kube-burner-test-5 pod/deployment-5-1-cd6b64cb5-nxm6n 1/1 Running 0 94s
kube-burner-test-6 pod/deployment-6-1-5f98d556b5-qr2lh 1/1 Running 0 94s
kube-burner-test-7 pod/deployment-7-1-7c474fb445-fx8x6 1/1 Running 0 94s
kube-burner-test-8 pod/deployment-8-1-56f8998b57-dhvhn 1/1 Running 0 94s
kube-burner-test-9 pod/deployment-9-1-5c66996f89-c5bcl 1/1 Running 0 93s
kube-system pod/coredns-674b8bbfcf-fxfgv 1/1 Running 0 30m
kube-system pod/coredns-674b8bbfcf-wmfjl 1/1 Running 0 30m
kube-system pod/etcd-myk8s-control-plane 1/1 Running 0 30m
kube-system pod/kindnet-9xtnc 1/1 Running 0 30m
...
> kube-burner init -c s1-config.yaml --log-level debug
time="2025-08-31 02:39:46" level=info msg="🔥 Starting kube-burner (1.17.3@917540ff45a89386bb25de45af9b96c9fc360e93) with UUID 67951a2a-6c4b-4f83-8708-d3d0d5767816" file="job.go:91"
time="2025-08-31 02:39:46" level=warning msg="Measurement [none] is not supported" file="factory.go:101"
time="2025-08-31 02:39:46" level=debug msg="job.MaxWaitTimeout is zero in create-deployments, override by timeout: 4h0m0s" file="job.go:361"
time="2025-08-31 02:39:46" level=info msg="QPS: 1" file="job.go:371"
time="2025-08-31 02:39:46" level=info msg="Burst: 10" file="job.go:378"
time="2025-08-31 02:39:46" level=debug msg="Preparing create job: create-deployments" file="create.go:46"
time="2025-08-31 02:39:46" level=debug msg="Rendering template: s1-deployment.yaml" file="create.go:52"
time="2025-08-31 02:39:46" level=info msg="Job create-deployments: 10 iterations with 1 Deployment replicas" file="create.go:84"
time="2025-08-31 02:39:46" level=info msg="Pre-load: images from job create-deployments" file="pre_load.go:73"
time="2025-08-31 02:39:47" level=debug msg="Created namespace: preload-kube-burner" file="namespaces.go:55"
time="2025-08-31 02:39:47" level=info msg="Pre-load: Creating DaemonSet using images [nginx:alpine] in namespace preload-kube-burner" file="pre_load.go:195"
time="2025-08-31 02:39:47" level=info msg="Pre-load: Sleeping for 30s" file="pre_load.go:86"
time="2025-08-31 02:40:17" level=info msg="Deleting 1 namespaces with label: kube-burner-preload=true" file="namespaces.go:67"
time="2025-08-31 02:40:17" level=debug msg="Waiting for 1 namespaces labeled with kube-burner-preload=true to be deleted" file="namespaces.go:90"
time="2025-08-31 02:40:18" level=debug msg="Waiting for 1 namespaces labeled with kube-burner-preload=true to be deleted" file="namespaces.go:90"
time="2025-08-31 02:40:19" level=debug msg="Waiting for 1 namespaces labeled with kube-burner-preload=true to be deleted" file="namespaces.go:90"
time="2025-08-31 02:40:20" level=debug msg="Waiting for 1 namespaces labeled with kube-burner-preload=true to be deleted" file="namespaces.go:90"
time="2025-08-31 02:40:21" level=debug msg="Waiting for 1 namespaces labeled with kube-burner-preload=true to be deleted" file="namespaces.go:90"
time="2025-08-31 02:40:22" level=debug msg="Waiting for 1 namespaces labeled with kube-burner-preload=true to be deleted" file="namespaces.go:90"
time="2025-08-31 02:40:23" level=info msg="Triggering job: create-deployments" file="job.go:122"
time="2025-08-31 02:40:23" level=debug msg="Creating object replicas from iteration 0" file="create.go:122"
time="2025-08-31 02:40:23" level=debug msg="Created namespace: kube-burner-test-0" file="namespaces.go:55"
time="2025-08-31 02:40:23" level=info msg="1/10 iterations completed" file="create.go:119"
time="2025-08-31 02:40:23" level=debug msg="Creating object replicas from iteration 1" file="create.go:122"
time="2025-08-31 02:40:23" level=debug msg="Created namespace: kube-burner-test-1" file="namespaces.go:55"
time="2025-08-31 02:40:23" level=debug msg="Created Deployment/deployment-0-1 in namespace kube-burner-test-0" file="create.go:288"
time="2025-08-31 02:40:23" level=info msg="2/10 iterations completed" file="create.go:119"
time="2025-08-31 02:40:23" level=debug msg="Creating object replicas from iteration 2" file="create.go:122"
time="2025-08-31 02:40:23" level=debug msg="Created Deployment/deployment-1-1 in namespace kube-burner-test-1" file="create.go:288"
time="2025-08-31 02:40:23" level=debug msg="Created namespace: kube-burner-test-2" file="namespaces.go:55"
time="2025-08-31 02:40:23" level=info msg="3/10 iterations completed" file="create.go:119"
time="2025-08-31 02:40:23" level=debug msg="Creating object replicas from iteration 3" file="create.go:122"
time="2025-08-31 02:40:23" level=debug msg="Created namespace: kube-burner-test-3" file="namespaces.go:55"
time="2025-08-31 02:40:23" level=info msg="4/10 iterations completed" file="create.go:119"
time="2025-08-31 02:40:23" level=debug msg="Creating object replicas from iteration 4" file="create.go:122"
time="2025-08-31 02:40:23" level=debug msg="Created Deployment/deployment-2-1 in namespace kube-burner-test-2" file="create.go:288"
time="2025-08-31 02:40:23" level=debug msg="Created namespace: kube-burner-test-4" file="namespaces.go:55"
time="2025-08-31 02:40:23" level=info msg="5/10 iterations completed" file="create.go:119"
time="2025-08-31 02:40:23" level=debug msg="Creating object replicas from iteration 5" file="create.go:122"
time="2025-08-31 02:40:23" level=debug msg="Created Deployment/deployment-3-1 in namespace kube-burner-test-3" file="create.go:288"
time="2025-08-31 02:40:23" level=debug msg="Created Deployment/deployment-4-1 in namespace kube-burner-test-4" file="create.go:288"
time="2025-08-31 02:40:23" level=debug msg="Created namespace: kube-burner-test-5" file="namespaces.go:55"
time="2025-08-31 02:40:23" level=info msg="6/10 iterations completed" file="create.go:119"
time="2025-08-31 02:40:23" level=debug msg="Creating object replicas from iteration 6" file="create.go:122"
time="2025-08-31 02:40:23" level=debug msg="Created namespace: kube-burner-test-6" file="namespaces.go:55"
time="2025-08-31 02:40:23" level=info msg="7/10 iterations completed" file="create.go:119"
time="2025-08-31 02:40:23" level=debug msg="Creating object replicas from iteration 7" file="create.go:122"
time="2025-08-31 02:40:23" level=debug msg="Created Deployment/deployment-5-1 in namespace kube-burner-test-5" file="create.go:288"
time="2025-08-31 02:40:23" level=debug msg="Created namespace: kube-burner-test-7" file="namespaces.go:55"
time="2025-08-31 02:40:23" level=info msg="8/10 iterations completed" file="create.go:119"
time="2025-08-31 02:40:23" level=debug msg="Creating object replicas from iteration 8" file="create.go:122"
time="2025-08-31 02:40:23" level=debug msg="Created Deployment/deployment-6-1 in namespace kube-burner-test-6" file="create.go:288"
time="2025-08-31 02:40:23" level=debug msg="Created namespace: kube-burner-test-8" file="namespaces.go:55"
time="2025-08-31 02:40:23" level=info msg="9/10 iterations completed" file="create.go:119"
time="2025-08-31 02:40:23" level=debug msg="Creating object replicas from iteration 9" file="create.go:122"
time="2025-08-31 02:40:23" level=debug msg="Created Deployment/deployment-7-1 in namespace kube-burner-test-7" file="create.go:288"
time="2025-08-31 02:40:23" level=debug msg="Created Deployment/deployment-8-1 in namespace kube-burner-test-8" file="create.go:288"
time="2025-08-31 02:40:24" level=debug msg="Created namespace: kube-burner-test-9" file="namespaces.go:55"
time="2025-08-31 02:40:24" level=debug msg="Created Deployment/deployment-9-1 in namespace kube-burner-test-9" file="create.go:288"
time="2025-08-31 02:40:24" level=info msg="Waiting up to 4h0m0s for actions to be completed" file="create.go:169"
time="2025-08-31 02:40:24" level=debug msg="Waiting for replicas from Deployment in ns kube-burner-test-0 to be ready" file="waiters.go:152"
time="2025-08-31 02:40:25" level=info msg="Actions in namespace kube-burner-test-0 completed" file="waiters.go:74"
time="2025-08-31 02:40:26" level=info msg="Actions in namespace kube-burner-test-1 completed" file="waiters.go:74"
time="2025-08-31 02:40:27" level=info msg="Actions in namespace kube-burner-test-2 completed" file="waiters.go:74"
time="2025-08-31 02:40:28" level=info msg="Actions in namespace kube-burner-test-3 completed" file="waiters.go:74"
time="2025-08-31 02:40:29" level=info msg="Actions in namespace kube-burner-test-4 completed" file="waiters.go:74"
time="2025-08-31 02:40:30" level=info msg="Actions in namespace kube-burner-test-5 completed" file="waiters.go:74"
time="2025-08-31 02:40:31" level=info msg="Actions in namespace kube-burner-test-6 completed" file="waiters.go:74"
time="2025-08-31 02:40:32" level=info msg="Actions in namespace kube-burner-test-7 completed" file="waiters.go:74"
time="2025-08-31 02:40:33" level=info msg="Actions in namespace kube-burner-test-8 completed" file="waiters.go:74"
time="2025-08-31 02:40:34" level=info msg="Actions in namespace kube-burner-test-9 completed" file="waiters.go:74"
time="2025-08-31 02:40:34" level=info msg="Job create-deployments took 11s" file="job.go:191"
time="2025-08-31 02:40:34" level=info msg="Finished execution with UUID: 67951a2a-6c4b-4f83-8708-d3d0d5767816" file="job.go:264"
time="2025-08-31 02:40:34" level=info msg="👋 Exiting kube-burner 67951a2a-6c4b-4f83-8708-d3d0d5767816" file="kube-burner.go:90"


2) jobIterations: 100, qps: 1, burst: 100 → 초당 1개지만 burst로 인해 초반 몰림 현상 가능, 조금 느려짐
> cat << EOF > s1-config.yaml
global:
measurements:
- name: none
jobs:
- name: create-deployments
jobType: create
jobIterations: 100 # How many times to execute the job , 해당 job을 5번 반복 실행
qps: 1 # Limit object creation queries per second , 초당 최대 요청 수 (평균 속도 제한) - qps: 10이면 초당 10개 요청
burst: 100 # 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
# watch로 모니터링 (기존)
Every 2.0s: kubectl get ns,pod -A
NAME STATUS AGE
namespace/default Active 35m
namespace/kube-burner-test-0 Active 60s
namespace/kube-burner-test-1 Active 60s
namespace/kube-burner-test-10 Active 60s
namespace/kube-burner-test-11 Active 60s
namespace/kube-burner-test-12 Active 60s
namespace/kube-burner-test-13 Active 60s
namespace/kube-burner-test-14 Active 60s
namespace/kube-burner-test-15 Active 60s
namespace/kube-burner-test-16 Active 60s
namespace/kube-burner-test-17 Active 60s
namespace/kube-burner-test-18 Active 60s
namespace/kube-burner-test-19 Active 60s
namespace/kube-burner-test-2 Active 60s
namespace/kube-burner-test-20 Active 60s
namespace/kube-burner-test-21 Active 60s
namespace/kube-burner-test-22 Active 60s
namespace/kube-burner-test-23 Active 60s
namespace/kube-burner-test-24 Active 60s
namespace/kube-burner-test-25 Active 60s
namespace/kube-burner-test-26 Active 60s
namespace/kube-burner-test-27 Active 60s
namespace/kube-burner-test-28 Active 60s
namespace/kube-burner-test-29 Active 60s
..


3) jobIterations: 10, qps: 1, burst: 10, replicas:2→ 초당 1개 Deployment 생성은 동일, 각 Deployment마다 Pod 2개 동시 스케줄링
> cat << EOF > s1-config.yaml
global:
measurements:
- name: none
jobs:
- name: create-deployments
jobType: create
jobIterations: 10 # How many times to execute the job , 해당 job을 5번 반복 실행
qps: 1 # Limit object creation queries per second , 초당 최대 요청 수 (평균 속도 제한) - qps: 10이면 초당 10개 요청
burst: 10 # 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: 2
EOF
Every 2.0s: kubectl get ns,pod -A
NAME STATUS AGE
namespace/default Active 81m
namespace/kube-burner-test-0 Active 5s
namespace/kube-burner-test-1 Active 5s
namespace/kube-burner-test-2 Active 5s
namespace/kube-burner-test-3 Active 5s
namespace/kube-burner-test-4 Active 5s
namespace/kube-burner-test-5 Active 4s
namespace/kube-burner-test-6 Active 2s
namespace/kube-burner-test-7 Active 0s
namespace/kube-node-lease Active 81m
namespace/kube-public Active 81m
namespace/kube-system Active 81m
namespace/local-path-storage Active 81m
namespace/monitoring Active 79m
NAMESPACE NAME READY STATUS RESTART
S AGE
kube-burner-test-0 pod/deployment-0-1-847b4c769f-d5mzf 1/1 Running 0
5s
kube-burner-test-0 pod/deployment-0-2-5d594cf9fc-n9sdm 1/1 Running 0
5s
kube-burner-test-1 pod/deployment-1-1-6f8cb5b47f-sxns7 1/1 Running 0
5s
kube-burner-test-1 pod/deployment-1-2-d4c9fd8df-s9dcg 1/1 Running 0
5s
kube-burner-test-2 pod/deployment-2-1-76645b9b7f-cvllp 1/1 Running 0
5s
kube-burner-test-2 pod/deployment-2-2-bdc4f8789-rm5pb 1/1 Running 0
5s
kube-burner-test-3 pod/deployment-3-1-66b4fdff59-vcdcv 1/1 Running 0
5s
kube-burner-test-3 pod/deployment-3-2-54c7cbc689-phw2z 1/1 Running 0


4) jobIterations:10, qps:1, burst:20, replicas:1 -> 초당 1개씩 직렬 생성 단, 시작 시 짧은 burst 대기열이 생길 수 있음
> cat << EOF > s1-config.yaml
global:
measurements:
- name: none
jobs:
- name: create-deployments
jobType: create
jobIterations: 10 # How many times to execute the job , 해당 job을 5번 반복 실행
qps: 1 # Limit object creation queries per second , 초당 최대 요청 수 (평균 속도 제한) - qps: 10이면 초당 10개 요청
burst: 20 # 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
Every 2.0s: kubectl get ns,pod -A
NAME STATUS AGE
namespace/default Active 85m
namespace/kube-burner-test-0 Active 3s
namespace/kube-burner-test-1 Active 3s
namespace/kube-burner-test-2 Active 3s
namespace/kube-burner-test-3 Active 3s
namespace/kube-burner-test-4 Active 3s
namespace/kube-burner-test-5 Active 2s
namespace/kube-node-lease Active 85m
namespace/kube-public Active 85m
namespace/kube-system Active 85m
namespace/local-path-storage Active 85m
namespace/monitoring Active 82m
NAMESPACE NAME READY STATUS RESTART
S AGE
kube-burner-test-0 pod/deployment-0-1-6664d44df6-glfhr 1/1 Running 0
3s
kube-burner-test-0 pod/deployment-0-2-9d7fb5bf4-wb9ft 1/1 Running 0
3s
kube-burner-test-1 pod/deployment-1-1-6f9dbd4b4-tg6pl 1/1 Running 0
2s
kube-burner-test-1 pod/deployment-1-2-7484f79f66-k9n42 1/1 Running 0
2s
kube-burner-test-2 pod/deployment-2-1-768b6b6ff6-dc2td 1/1 Running 0
2s
kube-burner-test-2 pod/deployment-2-2-84978b45c8-bb8t7 1/1 Running 0
2s
kube-burner-test-3 pod/deployment-3-1-bc4f44f48-966pw 1/1 Running 0
2s
kube-burner-test-3 pod/deployment-3-2-5d895f78c4-jtkrd 1/1 Running 0
2s


이를 통해 replicas는 Deployment 당 Pod 개수를 바꾸는 것이고, jobIterations, qps, burst 조합은 얼마나 빠르게 Deployment를 만들 것인가를 결정한다는 것을 알 수 있었습니다.
'스터디 > Cilium' 카테고리의 다른 글
| [Cilium] Cilium Security (0) | 2025.09.07 |
|---|---|
| [Cilium] Cilium Performance (1) | 2025.08.31 |
| [Cilium] Gateway API (2) | 2025.08.24 |
| [Cilium] Cilium Ingress (4) | 2025.08.23 |
| [Cilium] Cluster Mesh (2) | 2025.08.17 |