Kubestone을 사용하여 클라우드 기본 테스트 수행
12034 단어 devopsdockerkubernetes
간단한 소개
조직은 고객의 수요를 충족시키기 위해 용기와 분포식 응용 프로그램을 점점 더 찾고 있다.이와 함께 현대 기업들은 응용 프로그램에 대한 기준 테스트를 실시하고 인프라 시설과 관련된 일부 지표를 파악해야 한다.
본 논문에서, 나는 당신에게 Kubestone이라는 구름 원생 기준 테스트 도구를 소개할 것입니다.이 도구는 개발진이 Kubernetes 클러스터에서 성능 지표를 얻을 수 있도록 돕기 위한 것입니다.
Kubestone은 어떻게 일합니까?
Kubestone의 핵심은 Kubernetes Operator의 도움으로 Go language에서 Kubebuilder로 실현되는 것이다.this blog post 운영자 프레임워크에 대한 더 많은 정보를 찾을 수 있습니다.
Kubestone은 소스 오픈 기준을 이용하여 핵심 Kubernetes와 응용 프로그램의 성능을 평가합니다.기준 테스트는 Kubernetes에서 실행되기 때문에, 그룹에서 작업하려면 용기화되어야 합니다.xridge's DockerHub space를 통해 인증된 기준 용기를 제공하였다.다음은 현재 지원되는 벤치마크 테스트 목록입니다.
타입
데이텀 이름
지위.
코어/중앙 프로세서
시스템 워크스테이션
뒷받침
코어/디스크
비오
뒷받침
코어/디스크
이평
뒷받침
코어/메모리
시스템 워크스테이션
뒷받침
코어/네트워킹
iperf3
뒷받침
코어/네트워킹
qperf
뒷받침
HTTP 부하 측정기
훈련
뒷받침
어플리케이션/Etcd
etcd
계획
어플리케이션/K8S
쿠베페프
계획
어플리케이션/PostgreSQL
pgbench
뒷받침
응용/불꽃
스파르타
계획
Kubestone을 설치해서 표준 테스트를 실행해 봅시다. 어떻게 작동하는지 봅시다.
Kubestone 설치
요구 사항
Kubernetesv1.13(또는 업데이트)
kubestone-system
에 Kubestone을 배치합니다.$ kustomize build github.com/xridge/kubestone/config/default | kubectl create -f -
배포 후 Kubestone은 사용 kubestone.xridge.io
그룹이 만든 사용자 정의 자원을 탐색합니다.표준 관리
클러스터에 사용자 정의 리소스를 생성하여 Kubestone에서 벤치마크를 실행할 수 있습니다.
이름 공간
기준 테스트를 위한 전용 명칭 공간을 만드는 것을 권장합니다.
$ kubectl create namespace kubestone
명칭 공간을 만들면 그룹에 기준 테스트 요청을 발표할 수 있습니다.이로 인해 발생하는 기준 테스트 실행은 이 명칭 공간에 주재할 것입니다.
사용자 지정 리소스 렌더링
우리는 kustomize를 사용하여 github repository에서 사용자 정의 자원을 나타낼 것이다.
Kustomize는 하나의 base yaml 패치와 하나의 overlay file 패치를 사용하여 최종yaml 파일을 보여줍니다. 이 파일은 기준 테스트를 설명합니다.
$ kustomize build github.com/xridge/kubestone/config/samples/fio/overlays/pvc
사용자 정의 리소스(나타나는 yaml)는 다음과 같습니다.apiVersion: perf.kubestone.xridge.io/v1alpha1
kind: Fio
metadata:
name: fio-sample
spec:
cmdLineArgs: --name=randwrite --iodepth=1 --rw=randwrite --bs=4m --size=256M
image:
name: xridge/fio:3.13
volume:
persistentVolumeClaimSpec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
volumeSource:
persistentVolumeClaim:
claimName: GENERATED
Kubernetes에서 이 자원을 만들 때, 이 자원을 설명하고 관련 기준을 만듭니다.사용자 정의 자원에 대한 필드 제어 기준 테스트의 실행 방식:metadata.name
: 사용자 지정 리소스를 식별합니다.잠시 후, 이것은 그룹의 기준을 조회하거나 삭제하는 데 사용할 수 있습니다.cmdLineArgs
: 기준에 전달되는 매개 변수.이 예에서는 Fio(파일 시스템 벤치마크)에 매개변수를 제공합니다.기본 테스트는 4Mb 블록 크기로 랜덤 쓰기 테스트를 수행하며 총 전송 크기는 256MB입니다.image.name
: 데이텀을 설명하는 Docker 이미지입니다.Fio에 대해 우리는 xridge's fio Docker Image를 사용했고 this repository에 의해 구축되었다.volume.persistentVolumeClaimSpec
: Fio가 디스크 기준이라는 것을 감안하여 우리는 실행할 기준에 PersistentVolumeClaim을 설정할 수 있습니다.위의 설정은 Kubernetes가 기본 StorageClass에서 1GB의 공간을 가져와 기준 테스트에 사용하도록 표시합니다.실행 기준 테스트
이제 기준의 정의를 이해할 때, 우리는 그것을 실행하려고 시도할 수 있다.
주의: 이 절차를 실행하기 전에 kubestone 조작부호가 설치되어 있는지 확인하고 실행하십시오.
$ kustomize build github.com/xridge/kubestone/config/samples/fio/overlays/pvc | kubectl create --namespace kubestone -f -
kustomize build
명령의 출력을 파이프를 통해 kubectl create
전송하기 때문에, Kubernetes 그룹에 대상을 만들 것입니다.객체의 유형(
fio
과 이름(fio-sample
을 사용하여 결과 객체를 질의할 수 있습니다.$ kubectl describe --namespace kubestone fio fio-sample
Name: fio-sample
Namespace: kubestone
Labels: <none>
Annotations: <none>
API Version: perf.kubestone.xridge.io/v1alpha1
Kind: Fio
Metadata:
Creation Timestamp: 2019-09-14T11:31:02Z
Generation: 1
Resource Version: 31488293
Self Link: /apis/perf.kubestone.xridge.io/v1alpha1/namespaces/kubestone/fios/fio-sample
UID: 21cdbe92-d6e3-11e9-ba70-4439c4920abc
Spec:
Cmd Line Args: --name=randwrite --iodepth=1 --rw=randwrite --bs=4m --size=256M
Image:
Name: xridge/fio:3.13
Volume:
Persistent Volume Claim Spec:
Access Modes:
ReadWriteOnce
Resources:
Requests:
Storage: 1Gi
Volume Source:
Persistent Volume Claim:
Claim Name: GENERATED
Status:
Completed: true
Running: false
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Created 11s kubestone Created /api/v1/namespaces/kubestone/configmaps/fio-sample
Normal Created 11s kubestone Created /api/v1/namespaces/kubestone/persistentvolumeclaims/fio-sample
Normal Created 11s kubestone Created /apis/batch/v1/namespaces/kubestone/jobs/fio-sample
Events
부분에서 보듯이 Kubestone은 사용자 정의 자원을 제공하기 위해 ConfigMap
, PersistentVolumeClaim
와 Job
를 만들었다.Status
필드는 기준 테스트가 완료되었음을 알려 줍니다.검사 기준
kubectl
명령을 사용하여 데이텀과 관련된 생성된 객체를 나열할 수 있습니다.$ kubectl get pods,jobs,configmaps,pvc --namespace kubestone
NAME READY STATUS RESTARTS AGE
pod/fio-sample-bqqmm 0/1 Completed 0 54s
NAME COMPLETIONS DURATION AGE
job.batch/fio-sample 1/1 15s 54s
NAME DATA AGE
configmap/fio-sample 0 54s
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/fio-sample Bound pvc-b3898236-c698-11e9-8071-4439c4920abc 1Gi RWO rook-ceph-block 54s
위에서 보듯이 Fio controller는 Persistent Volume Claim과 Config Map을 만들고 Fio 작업은 기준 테스트가 실행되는 동안 사용합니다.Fio 작업에는 테스트 수행이 포함된 관련 Pod이 있습니다.실행 결과는 kubectl logs
명령을 통해 다음과 같이 표시됩니다.$ kubectl logs --namespace kubestone fio-sample-bqqmm
randwrite: (g=0): rw=randwrite, bs=(R) 4096KiB-4096KiB, (W) 4096KiB-4096KiB, (T) 4096KiB-4096KiB, ioengine=psync, iodepth=1
fio-3.13
Starting 1 process
randwrite: Laying out IO file (1 file / 256MiB)
randwrite: (groupid=0, jobs=1): err= 0: pid=47: Sat Aug 24 17:58:10 2019
write: IOPS=470, BW=1882MiB/s (1974MB/s)(256MiB/136msec); 0 zone resets
clat (usec): min=1887, max=2595, avg=2042.76, stdev=136.56
lat (usec): min=1953, max=2688, avg=2107.35, stdev=142.94
clat percentiles (usec):
| 1.00th=[ 1893], 5.00th=[ 1926], 10.00th=[ 1926], 20.00th=[ 1958],
| 30.00th=[ 1991], 40.00th=[ 2008], 50.00th=[ 2024], 60.00th=[ 2040],
| 70.00th=[ 2057], 80.00th=[ 2073], 90.00th=[ 2114], 95.00th=[ 2409],
| 99.00th=[ 2606], 99.50th=[ 2606], 99.90th=[ 2606], 99.95th=[ 2606],
| 99.99th=[ 2606]
lat (msec) : 2=34.38%, 4=65.62%
cpu : usr=2.22%, sys=97.78%, ctx=1, majf=0, minf=9
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued rwts: total=0,64,0,0 short=0,0,0,0 dropped=0,0,0,0
latency : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
WRITE: bw=1882MiB/s (1974MB/s), 1882MiB/s-1882MiB/s (1974MB/s-1974MB/s), io=256MiB (268MB), run=136-136msec
Disk stats (read/write):
rbd7: ios=0/0, merge=0/0, ticks=0/0, in_queue=0, util=0.00%
상장 기준
우리는 Kubestone이 맞춤형 자원을 사용하여 기준을 정의하는 것을 알게 되었다.
kubectl get crds
명령을 사용하여 설치된 사용자 지정 리소스를 나열할 수 있습니다.$ kubectl get crds | grep kubestone
drills.perf.kubestone.xridge.io 2019-09-08T05:51:26Z
fios.perf.kubestone.xridge.io 2019-09-08T05:51:26Z
iopings.perf.kubestone.xridge.io 2019-09-08T05:51:26Z
iperf3s.perf.kubestone.xridge.io 2019-09-08T05:51:26Z
pgbenches.perf.kubestone.xridge.io 2019-09-08T05:51:26Z
sysbenches.perf.kubestone.xridge.io 2019-09-08T05:51:26Z
위의 CRD 이름을 사용하여 시스템에서 수행된 데이텀을 나열할 수 있습니다.Kubernetes는 CRD에 대한 편리한 기능을 제공합니다. CRD의 줄임말 이름을 사용할 수 있습니다. 이것은 CRD 이름을 완전히 제한하는 단수 부분입니다.우리의 예에서
fios.perf.kubestone.xridge.io
는 fio
로 단축할 수 있다.따라서 다음 명령을 사용하여 수행된 기준fio
을 나열할 수 있습니다.$ kubectl get --namespace kubestone fios.perf.kubestone.xridge.io
NAME RUNNING COMPLETED
fio-sample false true
깨끗이 정리하다
벤치마크 테스트가 성공적으로 실행되면 생성된 개체는 Kubernetes 클러스터에 저장됩니다.Kubernetes는 시스템에 유한한 수량의 POD를 수용할 수 있음을 감안하여, 사용자가 수시로 기준 운행을 정리하는 것을 권장합니다.이렇게 하면 시작 기준 테스트의 사용자 정의 자원을 삭제할 수 있습니다.
$ kubectl delete --namespace kubestone fio fio-sample
사용자 정의 자원은 생성된 자원에 대한 소유권을 가지기 때문에 이 동작은 밑에 있는 POD, 작업, configmaps, PVC 등을 삭제합니다.다음 단계
이제 Kubestone의 핵심 개념에 익숙해졌으니 탐색과 기준 테스트를 할 때가 되었습니다.Fio 벤치마크
cmdLineArgs
, 영구 볼륨 및 스케줄링과 관련된 설정을 통해 Fio 벤치마크를 사용할 수 있습니다.피오의 기준 페이지에서 더 많은 정보를 찾을 수 있습니다.당신이 이 문장에서 가치 있는 지식을 얻을 수 있기를 바랍니다.
Reference
이 문제에 관하여(Kubestone을 사용하여 클라우드 기본 테스트 수행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/appfleet/cloud-native-benchmarking-with-kubestone-107m텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)