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(또는 업데이트)
  • Kustomize v3.1.0
  • 클러스터 관리 권한
  • 다음 명령을 사용하여 네임스페이스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, PersistentVolumeClaimJob를 만들었다.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.iofio로 단축할 수 있다.따라서 다음 명령을 사용하여 수행된 기준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 벤치마크를 사용할 수 있습니다.피오의 기준 페이지에서 더 많은 정보를 찾을 수 있습니다.당신이 이 문장에서 가치 있는 지식을 얻을 수 있기를 바랍니다.

    좋은 웹페이지 즐겨찾기