Skip to content

Instantly share code, notes, and snippets.

@ruo91
Last active November 17, 2025 16:35
Show Gist options
  • Select an option

  • Save ruo91/ea89be07b7e6e960c9e8763d69fade25 to your computer and use it in GitHub Desktop.

Select an option

Save ruo91/ea89be07b7e6e960c9e8763d69fade25 to your computer and use it in GitHub Desktop.
OpenShift 4.x - ETCD Performance Test

1. ETCD 인증서 저장

1.1. Server CA Bundle

$ ssh core@master01.ocp4.local "sudo cat /etc/kubernetes/static-pod-resources/etcd-certs/configmaps/etcd-all-bundles/server-ca-bundle.crt" > certs/server-ca-bundle.crt

1.2. ETCD Serving Cert / Key

$ ssh core@master01.ocp4.local "sudo cat /etc/kubernetes/static-pod-resources/etcd-certs/secrets/etcd-all-certs/etcd-serving-master01.ocp4.local.crt" > certs/etcd-serving.crt
$ ssh core@master01.ocp4.local "sudo cat /etc/kubernetes/static-pod-resources/etcd-certs/secrets/etcd-all-certs/etcd-serving-master01.ocp4.local.key" > certs/etcd-serving.key

2. ETCDCTL 빌드

2.1. GO Lang 구성

- 다운로드

$ cd /opt
$ wget https://go.dev/dl/go1.25.4.linux-amd64.tar.gz
$ tar xzvf go1.25.4.linux-amd64.tar.gz

- Profile 변수 설정

$ vi /etc/profile
# Golang
export GO_DIR=/opt
export GO_HOME=$GO_DIR/go
export GOPATH=$GO_DIR/gopath
export PATH=$PATH:$GO_HOME/bin

- ETCD 버전 확인

OpenShift 4.18 버전 기준, ETCD 서버는 3.5, 클라이언트는 3.5.18 버전임.

$ oc -n openshift-etcd exec -it "$(oc -n openshift-etcd get pod -l app=etcd -o jsonpath='{.items[0].metadata.name}')" -- etcdctl version
etcdctl version: 3.5.18
API version: 3.5

- 소스 빌드

$ mkdir /opt/etcd-performance
$ wget https://github.com/etcd-io/etcd/archive/refs/tags/etcdctl/v3.5.18.tar.gz
$ tar xzvf v3.5.18.tar.gz
$ cd etcd-etcdctl-v3.5.18
$ ./build.sh
$ cp bin/etcdctl /usr/local/bin/

3. ETCD 성능 테스트

3.1. 소규모(small)

- 수행 명령어

$ etcdctl check perf --load='s' \
--endpoints="192.168.10.10:2379,192.168.10.11:2379,192.168.10.12:2379" \
--cacert "/opt/etcd-performance/certs/server-ca-bundle.crt" \
--cert "/opt/etcd-performance/certs/etcd-serving.crt" \
--key "/opt/etcd-performance/certs/etcd-serving.key"

- 성능 결과

 60 / 60 Boooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00% 1m0s
PASS: Throughput is 150 writes/s
PASS: Slowest request took 0.220871s
PASS: Stddev is 0.010343s
PASS

3.2. 중규모(medium)

- 수행 명령어

$ etcdctl check perf --load='m' \
--endpoints="192.168.10.10:2379,192.168.10.11:2379,192.168.10.12:2379" \
--cacert "/opt/etcd-performance/certs/server-ca-bundle.crt" \
--cert "/opt/etcd-performance/certs/etcd-serving.crt" \
--key "/opt/etcd-performance/certs/etcd-serving.key"

- 성능 결과

 60 / 60 Boooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00% 1m0s
PASS: Throughput is 971 writes/s
PASS: Slowest request took 0.095532s
PASS: Stddev is 0.009554s
PASS

3.3. 대규모(large)

- 수행 명령어

$ etcdctl check perf --load='l' \
--endpoints="192.168.10.10:2379,192.168.10.11:2379,192.168.10.12:2379" \
--cacert "/opt/etcd-performance/certs/server-ca-bundle.crt" \
--cert "/opt/etcd-performance/certs/etcd-serving.crt" \
--key "/opt/etcd-performance/certs/etcd-serving.key"

3.4. 초대형(xLarge)

- 수행 명령어

$ etcdctl check perf --load='xl' \
--endpoints="192.168.10.10:2379,192.168.10.11:2379,192.168.10.12:2379" \
--cacert "/opt/etcd-performance/certs/server-ca-bundle.crt" \
--cert "/opt/etcd-performance/certs/etcd-serving.crt" \
--key "/opt/etcd-performance/certs/etcd-serving.key"

99. RefURL

[1]: Etcd Performance tests

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment