Рубрики
Uncategorized

Облако-родная бенчмаркинг с Кубстоном

Вступительные организации все чаще ищут контейнеры и распределенные приложения для … Tagged с Куберовщиком, докером, дежоптом.

Организации все чаще ищут контейнеры и распределенные приложения для обеспечения ловкости и масштабируемости, необходимые для удовлетворения своих клиентов. При этом современные предприятия также нужны способность ориентировать их приложение и знать о некоторых метриках по отношению к их инфраструктуре.

В этом посте я представляю вас к облачному инструменту на скамейке, известный как Кубстон Отказ Этот инструмент предназначен для поддержки ваших команд развития с получением показателей производительности из ваших кластеров Kubernetes.

У этого ядро, Kubestone реализован как Оператор Кубернетика в Иди язык С помощью Kubebuilder Отказ Вы можете найти больше информации о рамок оператора через Этот блог пост Отказ

Kubestone использует ориентиры с открытым исходным кодом для измерения ядра Kubernetes и производительности приложений. Поскольку тесты выполнены в Kubernetes, они должны быть контейнерными для работы над кластером. Сертифицированный набор тестовых контейнеров предоставляется через Космическое пространство Xridge’s Dockerhub Отказ Вот список тестов поддерживаемых в настоящее время:

Core / CPU Поддерживается Sysbench.
Core / Disc. Поддерживается файва
Core / Disc. Поддерживается yoping.
Core / Memory. Поддерживается Sysbench.
Core / Network Поддерживается iperf3.
Core / Network Поддерживается Qperf.
HTTP Last Tester. Поддерживается дрель
Приложение / etcd. Запланировано etcd.
Приложение / K8S. Запланировано куберперф
Приложение / PostgreSQL Поддерживается усадьба
Приложение / искра Запланировано Sparkbench.

Давайте попробуем установить KUBESTONE и запустить позоров самих и посмотреть, как это работает.

Требования

Развернуть Кубстоун к Kubestone-System пространство имен со следующей командой:

$ kustomize build github.com/xridge/kubestone/config/default | kubectl create -f -

После развертывания Kubestone будет слушать пользовательские ресурсы, созданные с kubestone.xridge.io группа.

Бенчмаркинг

Тесты могут быть выполнены через KUBESTONE, создавая пользовательские ресурсы в вашем кластере.

Пространство имен

Рекомендуется создать выделенное пространство имен для сравнительного анализа.

$ kubectl create namespace kubestone

После создания пространства имен вы можете использовать его, чтобы опубликовать контрольный запрос к кластеру.

Результирующие контрольные исполнения будут проживать в этом пространстве имен.

Пользовательский рендеринг ресурсов

Мы будем использовать Kustomize Чтобы сделать пользовательский ресурс из Репозиторий GitHub Отказ

Kustomize занимает База Ямл и патчи с Накладной файл Чтобы сделать финальный файл 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 : Аргументы прошли к ориентированию. В этом случае мы предоставляем аргументы Файва (ориентир файловой системы). Он указывает на тестовое значение для выполнения случайный тест на запись с 4 МБ размера блока с общим количеством передачи 256 МБ.
  • image.name : Описывает изображение докера теста. В случае Файва мы используем Fio Docker XRIDGE , который построен из Это репозиторий .
  • Volume.PersistentVolumeclaimspec : Учитывая, что Fio — это ориентир диска, мы можем установить PersiStentVolumeclaim для эталона для выполнения. Вышеуказанная установка поручает Kubernetes принимать 1 ГБ пространства от STORAGECLASS по умолчанию и использовать его для теста.

Теперь, как мы понимаем определение теста, мы можем попытаться выполнить его.

Примечание. Убедитесь, что вы установили оператор KUBESTONE и запустите его перед выполнением этого шага Отказ

$ kustomize build github.com/xridge/kubestone/config/samples/fio/overlays/pvc | kubectl create --namespace kubestone -f -

Так как мы трудим вывод Kustomize Build команда в kubectl Создайте , он создаст объект в наших кластере Kubernetes.

Полученный объект можно запросить с помощью типа объекта ( Fio ), и это имя ( Fio-образец ):

$ kubectl describe --namespace kubestone fio fio-sample
Name:         fio-sample
Namespace:    kubestone
Labels:       
Annotations:  
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

Как События Секция показывает, Kubestone создал Configmap. , a PersiStentVolumeclaim и а Работа для предоставленного пользовательского ресурса. Статус Поле говорит нам, что тест завершен.

Проверка ориентира

Созданные объекты, связанные с ориентиром, могут быть перечислены с использованием 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 создал PersiStentVolumEclaim и конфигурацию, которая используется работой 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 Получить CRD команда:

$ 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 может содержать ограниченное количество стручков в системе, рекомендуется, чтобы пользователь очистил тест на протяжении времени. Это может быть достигнуто путем удаления пользовательского ресурса, который инициировал эталон:

$ kubectl delete --namespace kubestone fio fio-sample

Поскольку пользовательский ресурс имеет право собственности на созданные ресурсы, основные стручки, задания, конфигурации, ПВХ и т. Д., также удаляются этой операцией.

Теперь вы знакомы с ключевыми понятиями Кубстона, пришло время исследовать и ориентировать. Вы можете играть с Fio Benchmark через это Cmdlineargs , Постоянный объем и планирование связанных настроек. Вы можете найти больше информации об этом на странице Benchmark Fio. Надеюсь, вы набрали некоторые ценные знания с этого поста!

Оригинал: «https://dev.to/appfleet/cloud-native-benchmarking-with-kubestone-107m»