zoukankan      html  css  js  c++  java
  • k8s 压测工具之perf-test

    1、安装go环境

    下载go

    配置环境变量

    export GO_HOME=/usr/local/go
    export PATH=$GO_HOME/bin:$PATH

    2、下载perftest

    https://github.com/kubernetes/perf-tests/

    3、解压后进入clusterloader2目录

    cd perf-tests-master/clusterloader2/

    4、运行时可以直接go运行,或者编译后

    go run cmd/clusterloader.go --kubeconfig=kubeConfig.yaml --testconfig=config.yaml

    或先编译,编译会生成clusterloader

    ./run-e2e.sh --testconfig=config.yaml
    ./clusterloader --kubeconfig=kubeConfig.yaml --testconfig=config.yaml

    5、配置待测试文件

    pod形式

    1、pod.yaml

    apiVersion: v1
    kind: Pod
    metadata:
      name: {{.Name}}
    #  name: nginx
      labels:
        group: {{.Group}}
    spec:
      containers:
      - image: nginx:1.12
        name: nginx

    2、测试文件 config-pod.yaml

    {{$namespaces := 1}}
    {{$podPerNamespace := 2}}
    {{$totalPods := 2}}  #pod数量
    
    name: pod-test
    automanagedNamespaces: {{$namespaces}}
    tuningSets:
    - name: Sequence
      parallelismLimitedLoad:
        parallelismLimit: 1
    steps:
    # start measurements
    - measurements:
      - Identifier: PodStartupLatency
        Method: PodStartupLatency
        Params:
          action: start
          labelSelector: group = latency
    - measurements:
      - Identifier: SchedulingMetrics
        Method: SchedulingMetrics
        Params:
          action: reset
          labelSelector: group = latency
    - measurements:
      - Identifier: SchedulingThroughput
        Method: SchedulingThroughput
        Params:
          action: start
    # create pods
    - phases:
      - namespaceRange:
          min: 1
          max: {{$namespaces}}
        replicasPerNamespace: {{$podPerNamespace}}
        tuningSet: Sequence
        objectBundle:
        - basename: latency-pod
          objectTemplatePath: pod.yaml
          templateFillMap:
            Group: latency
            AppName: latency-pod
    - measurements:
      - Identifier: SchedulingThroughput
        Method: SchedulingThroughput
        Params:
          action: gather
    - measurements:
      - Identifier: WaitForRunningPods
        Method: WaitForRunningPods
        Params:
          desiredPodCount: {{$totalPods}}
          labelSelector: group = latency
          timeout: 15m
     gather measurements
    - measurements:
      - Identifier: PodStartupLatency
        Method: PodStartupLatency
        Params:
          action: gather
    - measurements:
      - Identifier: SchedulingMetrics
        Method: SchedulingMetrics
        Params:
          action: gather

    deploy形式

    1、deploy文件 deployment.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: {{.Name}}
      labels:
        group: {{.Group}}
    spec:
      replicas: {{.Replicas}}
      selector:
        matchLabels:
          name: {{.Name}}
      template:
        metadata:
          labels:
            name: {{.Name}}
            group: {{.Group}}
        spec:
          containers:
          - name: {{.Name}}
            image: nginx:1.12

    2、config-deployment-old.yaml

    {{$namespaces := 1}}
    {{$deploymentPerNamespace := 200}}
    
    name: deployment-test
    automanagedNamespaces: {{$namespaces}}
    tuningSets:
    - name: Sequence
      parallelismLimitedLoad:
        parallelismLimit: 1
    steps:
    # start measurements
    - measurements:
      - Identifier: WaitForRunningDeployments
        Method: WaitForControlledPodsRunning
        Params:
          action: start
          apiVersion: apps/v1
          kind: Deployment
          labelSelector: group = latency
          operationTimeout: 15m
    # create deployment
    - phases:
      - namespaceRange:
          min: 1
          max: {{$namespaces}}
        replicasPerNamespace: {{$deploymentPerNamespace}}
        tuningSet: Sequence
        objectBundle:
        - basename: latency-deployment
          objectTemplatePath: deployment.yaml
          templateFillMap:
            Replicas: 3
            Group: latency
    - measurements:
      - Identifier: WaitForRunningDeployments
        Method: WaitForControlledPodsRunning
        Params:
          action: gather
    # create deployment
    - phases:
      - namespaceRange:
          min: 1
          max: {{$namespaces}}
        replicasPerNamespace: {{$deploymentPerNamespace}}
        tuningSet: Sequence
        objectBundle:
        - basename: latency-deployment
          objectTemplatePath: deployment.yaml
          templateFillMap:
            Replicas: 5
            Group: latency
    - measurements:
      - Identifier: WaitForRunningDeployments
        Method: WaitForControlledPodsRunning
        Params:
          action: gather
    
    - phases:
      - namespaceRange:
          min: 1
          max: {{$namespaces}}
        replicasPerNamespace: {{$deploymentPerNamespace}}
        tuningSet: Sequence
        objectBundle:
        - basename: latency-deployment
          objectTemplatePath: deployment.yaml
          templateFillMap:
            Replicas: 0
            Group: latency
    - measurements:
      - Identifier: WaitForRunningDeployments
        Method: WaitForControlledPodsRunning
        Params:
          action: gather

    6、完整测试命令

    样例:

    ./clusterloader --kubeconfig=/root/.kube/config  --alsologtostderr --provider=local --masterip=<集群masterIP> --master-internal-ip=<集群masterIP> --mastername=<集群master hostname> --report-dir=<测试结果生成目录> --testconfig=<测试文件>

    实际命令

    #测试pod
    ./clusterloader --kubeconfig=/root/.kube/config  --alsologtostderr --provider=local --masterip=192.168.7.7 --master-internal-ip=192.168.7.7 --mastername=master --report-dir=result --testconfig=config-pod.yaml
    
    #测试deployment
    ./clusterloader --kubeconfig=/root/.kube/config  --alsologtostderr --provider=local --masterip=192.168.7.7 --master-internal-ip=192.168.7.7 --mastername=master --report-dir=result --testconfig=config-deployment.yaml

    7、结果展示

  • 相关阅读:
    Educational Codeforces Round 86 (Rated for Div. 2) D. Multiple Testcases
    Educational Codeforces Round 86 (Rated for Div. 2) C. Yet Another Counting Problem
    HDU
    HDU
    HDU
    HDU
    Good Bye 2019 C. Make Good (异或的使用)
    Educational Codeforces Round 78 (Rated for Div. 2) C. Berry Jam
    codeforces 909C. Python Indentation
    codeforces1054 C. Candies Distribution
  • 原文地址:https://www.cnblogs.com/zphqq/p/13036524.html
Copyright © 2011-2022 走看看