惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
NISL@THU
NISL@THU
E
Exploit-DB.com RSS Feed
L
LINUX DO - 热门话题
L
Lohrmann on Cybersecurity
K
Kaspersky official blog
Project Zero
Project Zero
Cisco Talos Blog
Cisco Talos Blog
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threatpost
S
Schneier on Security
G
GRAHAM CLULEY
The Hacker News
The Hacker News
T
Threat Research - Cisco Blogs
Scott Helme
Scott Helme
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Privacy & Cybersecurity Law Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Cyberwarzone
Cyberwarzone
C
CERT Recently Published Vulnerability Notes
T
Tor Project blog
AWS News Blog
AWS News Blog
Simon Willison's Weblog
Simon Willison's Weblog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
爱范儿
爱范儿
P
Privacy International News Feed
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
S
Securelist
G
Google Developers Blog
The Last Watchdog
The Last Watchdog
Google Online Security Blog
Google Online Security Blog
美团技术团队
F
Fortinet All Blogs
小众软件
小众软件
Recorded Future
Recorded Future
V
Visual Studio Blog
B
Blog RSS Feed
H
Help Net Security
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Google DeepMind News
Google DeepMind News
Blog — PlanetScale
Blog — PlanetScale
博客园 - 聂微东
Stack Overflow Blog
Stack Overflow Blog
Martin Fowler
Martin Fowler
Latest news
Latest news
Spread Privacy
Spread Privacy
H
Heimdal Security Blog

博客园 - 勤劳の洗碗机

pyinstaller打包exe故障解析 curl 访问k8s api k8s 之HPA应用 statefulset 及storageclass hadoop 伪分布式 完全分布式 及HA部署 LDAP部署及实践 docker 制作自己的mysql镜像 mysql相关(三)、主从复制 shell执行mysql脚本 分布式minio image-syncer 误删libc.so.6文件补救 docker 使用bind 动态扩容pvc k8s备份工具之velero jmeter使用 docker 制作ssh镜像 docker 制作自定义的nginx镜像 docker部署sharding-proxy
k8s 压测工具之perf-test
勤劳の洗碗机 · 2020-12-02 · via 博客园 - 勤劳の洗碗机

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、结果展示