Merge "Add test results for Kubernetes API latency."
@ -6,3 +6,4 @@ Container cluster systems performance
|
||||
:maxdepth: 4
|
||||
|
||||
mesos-marathon/mesos-marathon
|
||||
kubernetes/index
|
||||
|
After Width: | Height: | Size: 257 KiB |
@ -0,0 +1,18 @@
|
||||
FROM golang:1.6.3
|
||||
|
||||
RUN mkdir /reports && \
|
||||
apt-get update && \
|
||||
apt-get install -y rsync && \
|
||||
mkdir -p /go/src/k8s.io && \
|
||||
go get -u github.com/jteeuwen/go-bindata/go-bindata && \
|
||||
git clone -b v1.3.5 https://github.com/kubernetes/kubernetes.git /go/src/k8s.io/kubernetes
|
||||
|
||||
WORKDIR /go/src/k8s.io/kubernetes
|
||||
|
||||
RUN make all WHAT=cmd/kubectl && \
|
||||
make all WHAT=vendor/github.com/onsi/ginkgo/ginkgo && \
|
||||
make all WHAT=test/e2e/e2e.test
|
||||
|
||||
COPY entrypoint.sh /
|
||||
RUN chmod +x /entrypoint.sh
|
||||
CMD /entrypoint.sh
|
@ -0,0 +1,66 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import json
|
||||
import logging
|
||||
import sys
|
||||
|
||||
from tabulate import tabulate
|
||||
|
||||
|
||||
def cut_json_data(file_with_results):
|
||||
json_data = "{"
|
||||
start = False
|
||||
end = False
|
||||
with open(file_with_results) as f:
|
||||
for line in f:
|
||||
end = end or "Finish:Performance" in line
|
||||
if end:
|
||||
break
|
||||
if start:
|
||||
json_data += line
|
||||
start = start or "Result:Performance" in line
|
||||
data = json.loads(json_data)
|
||||
return data
|
||||
|
||||
|
||||
def get_resources_and_request_types(data):
|
||||
resources = {}
|
||||
for data_item in data["dataItems"]:
|
||||
resource = data_item["labels"]["Resource"]
|
||||
if resource not in resources:
|
||||
resources[resource] = {}
|
||||
type_of_request = data_item["labels"]["Verb"]
|
||||
resources[resource][type_of_request] = data_item["data"]
|
||||
return resources
|
||||
|
||||
|
||||
def create_rst_tables(resource):
|
||||
headers = ["Method"]
|
||||
data = []
|
||||
for method, perc in resource.iteritems():
|
||||
headers += perc.keys()
|
||||
data.append([method] + perc.values())
|
||||
tables = tabulate(data, headers=headers, tablefmt="grid")
|
||||
return tables
|
||||
|
||||
|
||||
def put_tables_to_file(file_with_results):
|
||||
rst_file = file_with_results.split(".")[0] + ".rst"
|
||||
data = cut_json_data(file_with_results)
|
||||
with open(rst_file, 'w') as f:
|
||||
for resource, data in \
|
||||
get_resources_and_request_types(data).iteritems():
|
||||
table_head = "\n" + resource + "\n"
|
||||
table_head_underline = ""
|
||||
for character in resource:
|
||||
table_head_underline += "^"
|
||||
table_head += table_head_underline + "\n"
|
||||
f.write(table_head + create_rst_tables(data))
|
||||
|
||||
|
||||
def main(file_with_results):
|
||||
put_tables_to_file(file_with_results)
|
||||
|
||||
if __name__ == '__main__':
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
main(sys.argv[1])
|
@ -0,0 +1,51 @@
|
||||
#!/bin/bash
|
||||
set -u -e
|
||||
|
||||
function escape_test_name() {
|
||||
sed 's/[]\$*.^|()[]/\\&/g; s/\s\+/\\s+/g' <<< "$1" | tr -d '\n'
|
||||
}
|
||||
|
||||
TESTS_TO_SKIP=(
|
||||
'[k8s.io] Port forwarding [k8s.io] With a server that expects no client request should support a client that connects, sends no data, and disconnects [Conformance]'
|
||||
'[k8s.io] Port forwarding [k8s.io] With a server that expects a client request should support a client that connects, sends no data, and disconnects [Conformance]'
|
||||
'[k8s.io] Port forwarding [k8s.io] With a server that expects a client request should support a client that connects, sends data, and disconnects [Conformance]'
|
||||
'[k8s.io] Downward API volume should update annotations on modification [Conformance]'
|
||||
'[k8s.io] DNS should provide DNS for services [Conformance]'
|
||||
'[k8s.io] Load capacity [Feature:ManualPerformance] should be able to handle 3 pods per node'
|
||||
)
|
||||
|
||||
function skipped_test_names () {
|
||||
local first=y
|
||||
for name in "${TESTS_TO_SKIP[@]}"; do
|
||||
if [ -z "${first}" ]; then
|
||||
echo -n "|"
|
||||
else
|
||||
first=
|
||||
fi
|
||||
echo -n "$(escape_test_name "${name}")\$"
|
||||
done
|
||||
}
|
||||
|
||||
if [ -z "${API_SERVER}" ]; then
|
||||
echo "Must provide API_SERVER env var" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
export KUBERNETES_PROVIDER=skeleton
|
||||
export KUBERNETES_CONFORMANCE_TEST=y
|
||||
|
||||
# Configure kube config
|
||||
cluster/kubectl.sh config set-cluster local --server="${API_SERVER}" --insecure-skip-tls-verify=true
|
||||
cluster/kubectl.sh config set-context local --cluster=local --user=local
|
||||
cluster/kubectl.sh config use-context local
|
||||
|
||||
if [ -z "${FOCUS}" ]; then
|
||||
# non-serial tests can be run in parallel mode
|
||||
GINKGO_PARALLEL=y go run hack/e2e.go --v --test -check_version_skew=false \
|
||||
--test_args="--ginkgo.focus=\[Conformance\] --ginkgo.skip=\[Serial\]|\[Flaky\]|\[Feature:.+\]|$(skipped_test_names)"
|
||||
|
||||
# serial tests must be run without GINKGO_PARALLEL
|
||||
go run hack/e2e.go --v --test -check_version_skew=false --test_args="--ginkgo.focus=\[Serial\].*\[Conformance\] --ginkgo.skip=$(skipped_test_names)"
|
||||
else
|
||||
go run hack/e2e.go --v --test -check_version_skew=false --test_args="--ginkgo.focus=$(escape_test_name "${FOCUS}") --ginkgo.skip=$(skipped_test_names)"
|
||||
fi
|
@ -0,0 +1,23 @@
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: k8s-e2e
|
||||
spec:
|
||||
containers:
|
||||
- image: k8s-e2e
|
||||
name: k8s-e2e
|
||||
env:
|
||||
- name: E2E_REPORT_DIR
|
||||
value: /reports
|
||||
- name: API_SERVER
|
||||
value: ${API_SERVER}
|
||||
- name: FOCUS
|
||||
value: "Load capacity"
|
||||
volumeMounts:
|
||||
- mountPath: /reports
|
||||
name: job-params
|
||||
restartPolicy: Never
|
||||
volumes:
|
||||
- hostPath:
|
||||
path: /var/lib/volumes/e2e-test/10_nodes
|
||||
name: job-params
|
@ -0,0 +1,328 @@
|
||||
.. _Results_of_Measuring_of_API_performance_of_Kubernetes:
|
||||
|
||||
*****************************************************
|
||||
Results of measuring of API performance of Kubernetes
|
||||
*****************************************************
|
||||
|
||||
:Abstract:
|
||||
|
||||
This document includes performance test results of Kubernetes API.
|
||||
All tests have been performed regarding
|
||||
:ref:`Measuring_of_API_performance_of_Kubernetes`
|
||||
|
||||
|
||||
Environment description
|
||||
=======================
|
||||
Hardware configuration of each server
|
||||
-------------------------------------
|
||||
|
||||
.. table:: Description of servers hardware
|
||||
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|server |name |node-{1..500}, kuber* |node-{1..355} |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |role |kubernetes cluster |kubernetes cluster |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |vendor,model |Dell, R630 |Lenovo, RD550-1U |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |operating_system| | 4.4.0-36-generic | | 4.4.0-36-generic |
|
||||
| | | | Ubuntu-xenial | | Ubuntu-xenial |
|
||||
| | | | x86_64 | | x86_64 |
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|CPU |vendor,model |Intel, E5-2680v3 |Intel, E5-2680 v3 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |processor_count |2 |2 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |core_count |12 |12 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |frequency_MHz |2500 |2500 |
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|RAM |vendor,model |Hynix, HMA42GR7MFR4N-TF |IBM,??? |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |amount_MB |262144 |262144 |
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|NETWORK|interface_name |bond0 |bond0 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |vendor,model |Intel, X710 Dual Port |Intel, X710 Dual Port |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |interfaces_count|2 |2 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |bandwidth |10G |10G |
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|STORAGE|dev_name |/dev/sda |/dev/sda |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |vendor,model | | raid1 PERC H730P Mini| | raid1 - LSI ???? |
|
||||
| | | | 2 disks Intel S3610 | | 2 disks Intel S3610 |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |SSD/HDD |SSD |SSD |
|
||||
| +----------------+------------------------+------------------------+
|
||||
| |size | 800GB | 800GB |
|
||||
+-------+----------------+------------------------+------------------------+
|
||||
|
||||
* kuber is a one-node Kubernetes cluster used to run container with test tool
|
||||
|
||||
Network scheme and part of configuration of hardware network switches
|
||||
---------------------------------------------------------------------
|
||||
Network scheme of the environment:
|
||||
|
||||
.. image:: Network_Scheme.png
|
||||
:alt: Network Scheme of the environment
|
||||
:scale: 65
|
||||
|
||||
Here is the piece of switch configuration for each switch port which is a part of
|
||||
bond0 interface of a server:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
switchport mode trunk
|
||||
switchport trunk native vlan 600
|
||||
switchport trunk allowed vlan 600-602,630-649
|
||||
spanning-tree port type edge trunk
|
||||
spanning-tree bpduguard enable
|
||||
no snmp trap link-status
|
||||
|
||||
Software configuration of kubernetes service
|
||||
--------------------------------------------
|
||||
Setting up Kubernetes
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
Kubernetes was installed using `Kargo`_ deplyment tool.
|
||||
Kargo operates the following roles:
|
||||
|
||||
- master: Calico, Kubernetes API services
|
||||
- minion: Calico, kubernetetes minion services
|
||||
- etcd: etcd service
|
||||
|
||||
Kargo deploys Kubernetes cluster with the following matching hostnames and
|
||||
roles:
|
||||
|
||||
- node1: minion+master+etcd
|
||||
- node2: minion+master+etcd
|
||||
- node3: minion+etcd
|
||||
- all other nodes: minion
|
||||
|
||||
We installed Kargo on top of dedicated node and start deployment (change
|
||||
ADMIN_IP and SLAVE_IPS variables to addresses of your nodes and SLAVES_COUNT
|
||||
to nodes count):
|
||||
|
||||
.. code:: bash
|
||||
|
||||
git clone https://review.openstack.org/openstack/fuel-ccp-installer
|
||||
cd fuel-ccp-installer
|
||||
cat >> create_env_kargo.sh << EOF
|
||||
set -ex
|
||||
|
||||
export ENV_NAME="kargo-test"
|
||||
export DEPLOY_METHOD="kargo"
|
||||
export WORKSPACE="/root/workspace"
|
||||
export ADMIN_USER="vagrant"
|
||||
export ADMIN_PASSWORD="kargo"
|
||||
|
||||
# for 10 nodes
|
||||
export SLAVES_COUNT=10
|
||||
export ADMIN_IP="10.3.58.122"
|
||||
export SLAVE_IPS="10.3.58.122 10.3.58.138 10.3.58.145 10.3.58.140 10.3.58.124 10.3.58.126 10.3.58.158 10.3.58.173 10.3.58.151 10.3.58.161"
|
||||
|
||||
export CUSTOM_YAML='docker_version: 1.12
|
||||
hyperkube_image_repo: "quay.io/coreos/hyperkube"
|
||||
hyperkube_image_tag: "v1.3.5_coreos.0"
|
||||
etcd_image_repo: "quay.io/coreos/etcd"
|
||||
etcd_image_tag: "v3.0.1"
|
||||
calicoctl_image_repo: "calico/ctl"
|
||||
#calico_node_image_repo: "calico/node"
|
||||
calico_node_image_repo: "l23network/node"
|
||||
calico_node_image_tag: "v0.20.0"
|
||||
calicoctl_image_tag: "v0.20.0"
|
||||
kube_apiserver_insecure_bind_address: "0.0.0.0"
|
||||
|
||||
mkdir -p $WORKSPACE
|
||||
echo "Running on $NODE_NAME: $ENV_NAME"
|
||||
cd /root/fuel-ccp-installer
|
||||
bash "./utils/jenkins/run_k8s_deploy_test.sh"
|
||||
|
||||
EOF
|
||||
./create_env_kargo.sh
|
||||
|
||||
.. table:: Versions of some software
|
||||
|
||||
+--------------------+------------------------------------------+
|
||||
| Software | Version |
|
||||
+--------------------+------------------------------------------+
|
||||
| Ubuntu | Ubuntu 16.04.1 LTS |
|
||||
+--------------------+------------------------------------------+
|
||||
| Kargo | 54d64106c74c72433c7c492a8a9a5075e17de35b |
|
||||
+--------------------+------------------------------------------+
|
||||
|
||||
Operating system configuration
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
You can find outputs of some commands and /etc folder in the following archive:
|
||||
:download:`server_description_of_node1 <configs/server_description_of_node1.tar.gz>`
|
||||
:download:`server_description_of_node3 <configs/server_description_of_node3.tar.gz>`
|
||||
:download:`server_description_of_node4 <configs/server_description_of_node4.tar.gz>`
|
||||
|
||||
Software configuration of Test tool:
|
||||
------------------------------------
|
||||
Test tool preparation
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
Kubernetes `e2e-tests`_ has been used to collect API latencies during the
|
||||
tests. We've run the test having Docker container with the tool. To build the
|
||||
container create e2e-tests directory and copy files from
|
||||
`Files and scripts to build Docker container with e2e-test tool`_ section to
|
||||
the directory. Then build the image:
|
||||
|
||||
.. code:: bash
|
||||
|
||||
root@kuber:~# cd e2e-tests
|
||||
root@kuber:~/e2e-tests# docker build -t k8s_e2e ./
|
||||
|
||||
Test tool description
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
- The test creates 30 pods per Kubernetes minion.
|
||||
- 300 on 10-nodes cluster
|
||||
- 1500 on 50-nodes cluster
|
||||
- 10650 on 355-nodes cluster
|
||||
- The test actually spawns replication controllers, not pods directly
|
||||
- The test spawns three types of replication controllers:
|
||||
- small which includes 5 pods
|
||||
- medium which includes 30 pods
|
||||
- big which includes 250 pods
|
||||
- After all containers are spawned the test resizes them
|
||||
- The test performs 10 actions/sec
|
||||
You can see more from the `load.py`_ code.
|
||||
|
||||
.. table:: Versions of some software
|
||||
|
||||
+----------------------------+------------------------------------------+
|
||||
| Software | Version |
|
||||
+----------------------------+------------------------------------------+
|
||||
| Ubuntu | Ubuntu 14.04 LTS |
|
||||
+----------------------------+------------------------------------------+
|
||||
| e2e-test (kubernetes repo) | v1.3.5 |
|
||||
+----------------------------+------------------------------------------+
|
||||
| Docker | 1.11.2, build b9f10c9 |
|
||||
+----------------------------+------------------------------------------+
|
||||
|
||||
Operating system configuration:
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
You can find outputs of some commands and /etc folder in the following archive:
|
||||
:download:`server_description_of_e2e-test_node <configs/server_description_of_kuber.tar.gz>`
|
||||
|
||||
Testing process
|
||||
===============
|
||||
Preparation
|
||||
-----------
|
||||
1.
|
||||
Kubernetes was set up on top of 10 nodes as described in
|
||||
`Setting up kubernetes`_ section.
|
||||
|
||||
2.
|
||||
e2e-test container was running on top of infrastructure one-node Kubernetes
|
||||
cluster called "kuber". You can find k8s_e2e.yaml in
|
||||
`Files and scripts to run Docker container with e2e-test tool`_. You need to
|
||||
change "${API_SERVER}" to URI of Kubernetes API (for example
|
||||
http://10.3.58.66:8080). Also you need to specify filder where results will
|
||||
be stored. For 10-nodes cluster we created
|
||||
"/var/lib/volumes/e2e-test/10_nodes" filder. This folder will be mounted to
|
||||
the container as a volume.
|
||||
|
||||
.. code:: bash
|
||||
|
||||
root@kuber:~/e2e-tests# mkdir -p /var/lib/volumes/e2e-test/10_nodes
|
||||
# set API URI and volume folder:
|
||||
root@kuber:~/e2e-tests# vim k8s_e2e.yaml
|
||||
root@kuber:~/e2e-tests# kubectl create -f k8s_e2e.yaml
|
||||
# To store log to a file:
|
||||
root@kuber:~/e2e-tests# kubectl attach k8s-e2e 2>&1 | tee -a /var/lib/volumes/e2e-test/10_nodes/k8s-e2e.log
|
||||
|
||||
3.
|
||||
After that we have a log file which includes JSON with Kubernetes API
|
||||
latency. We can use simple Python script from
|
||||
`Script to convert JSON from log file to RST table`_ to create rst tables
|
||||
from the log file.
|
||||
|
||||
.. code:: bash
|
||||
|
||||
root@kuber:~/e2e-tests# python create_rst_table_from_k8s_e2e_log.py /var/lib/volumes/e2e-test/10_nodes/k8s-e2e.log
|
||||
|
||||
Now we have /var/lib/volumes/e2e-test/10_nodes/k8s-e2e.rst file with rst
|
||||
tables.
|
||||
|
||||
We performed the steps from 1 to 3 for Kubernetes cluster on top of 10, 50 and
|
||||
355 nodes.
|
||||
|
||||
Results
|
||||
=======
|
||||
10-nodes cluster
|
||||
----------------
|
||||
|
||||
.. include:: results/10_nodes_results.rst
|
||||
|
||||
50-nodes cluster
|
||||
----------------
|
||||
|
||||
.. include:: results/50_nodes_results.rst
|
||||
|
||||
355-nodes cluster
|
||||
-----------------
|
||||
|
||||
.. include:: results/355_nodes_results.rst
|
||||
|
||||
Comparation
|
||||
-----------
|
||||
Here is you can see results comparation from 10, 50 and 355 nodes clusters.
|
||||
Please note, that numbers of pods and other items depend on numbers of nodes.
|
||||
|
||||
-
|
||||
300 pods will be spawned on 10-nodes cluster
|
||||
-
|
||||
1500 pods will be spawned on 50-nodes cluster
|
||||
-
|
||||
10650 pods will be spawned on 355-nodes cluster
|
||||
|
||||
+---------------------------------------------+-------------------------------+
|
||||
|.. image:: results/replicationcontrollers.png|.. image:: results/pods.png |
|
||||
| :alt: replicationcontrollers latency | :alt: pods latency |
|
||||
| :scale: 50 | :scale: 50 |
|
||||
+---------------------------------------------+-------------------------------+
|
||||
|.. image:: results/endpoints.png |.. image:: results/nodes.png |
|
||||
| :alt: endpoints latency | :alt: nodes latency |
|
||||
| :scale: 50 | :scale: 50 |
|
||||
+---------------------------------------------+-------------------------------+
|
||||
|.. image:: results/resourcequotas.png |.. image:: results/secrets.png |
|
||||
| :alt: resourcequotas.png latency | :alt: secrets latency |
|
||||
| :scale: 50 | :scale: 50 |
|
||||
+---------------------------------------------+-------------------------------+
|
||||
|
||||
Applications
|
||||
============
|
||||
Files and scripts to build Docker container with e2e-test tool
|
||||
--------------------------------------------------------------
|
||||
e2e-tests/Dockerfile:
|
||||
|
||||
.. literalinclude:: e2e-tests/Dockerfile
|
||||
:language: dockerfile
|
||||
|
||||
e2e-tests/entrypoint.sh:
|
||||
|
||||
.. literalinclude:: e2e-tests/entrypoint.sh
|
||||
:language: bash
|
||||
|
||||
Files and scripts to run Docker container with e2e-test tool
|
||||
------------------------------------------------------------
|
||||
e2e-tests/k8s-e2e.yaml:
|
||||
|
||||
.. literalinclude:: e2e-tests/k8s-e2e.yaml
|
||||
:language: yaml
|
||||
|
||||
Script to convert JSON from log file to RST table
|
||||
-------------------------------------------------
|
||||
e2e-tests/create_rst_table_from_k8s_e2e_log.py:
|
||||
|
||||
.. literalinclude:: e2e-tests/create_rst_table_from_k8s_e2e_log.py
|
||||
:language: python
|
||||
|
||||
|
||||
.. references:
|
||||
|
||||
.. _Kargo: https://github.com/kubespray/kargo
|
||||
.. _e2e-tests: https://github.com/kubernetes/kubernetes/blob/release-1.4/docs/devel/e2e-tests.md
|
||||
.. _load.py: https://github.com/kubernetes/kubernetes/blob/master/test/e2e/load.go
|
@ -0,0 +1,66 @@
|
||||
|
||||
resourcequotas
|
||||
^^^^^^^^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| LIST | 1.323 | 1.323 | 1.323 |
|
||||
+----------+----------+----------+----------+
|
||||
secrets
|
||||
^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| GET | 2.121 | 1.734 | 1.505 |
|
||||
+----------+----------+----------+----------+
|
||||
replicationcontrollers
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| PUT | 6.425 | 5.793 | 4.77 |
|
||||
+----------+----------+----------+----------+
|
||||
| POST | 6.849 | 4.074 | 3.433 |
|
||||
+----------+----------+----------+----------+
|
||||
| GET | 1.872 | 1.6 | 1.393 |
|
||||
+----------+----------+----------+----------+
|
||||
| LIST | 7.31 | 6.674 | 3.989 |
|
||||
+----------+----------+----------+----------+
|
||||
| DELETE | 5.573 | 5.468 | 5.122 |
|
||||
+----------+----------+----------+----------+
|
||||
namespaces
|
||||
^^^^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| POST | 2.514 | 2.514 | 2.514 |
|
||||
+----------+----------+----------+----------+
|
||||
nodes
|
||||
^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| PUT | 14.585 | 9.123 | 8.21 |
|
||||
+----------+----------+----------+----------+
|
||||
| GET | 2.342 | 2.255 | 1.971 |
|
||||
+----------+----------+----------+----------+
|
||||
endpoints
|
||||
^^^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| GET | 1.786 | 1.575 | 1.327 |
|
||||
+----------+----------+----------+----------+
|
||||
pods
|
||||
^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| PUT | 9.142 | 6.858 | 5.742 |
|
||||
+----------+----------+----------+----------+
|
||||
| GET | 2.369 | 1.775 | 1.514 |
|
||||
+----------+----------+----------+----------+
|
||||
| LIST | 4.951 | 1.936 | 1.328 |
|
||||
+----------+----------+----------+----------+
|
||||
| DELETE | 15.229 | 12.946 | 11.485 |
|
||||
+----------+----------+----------+----------+
|
@ -0,0 +1,108 @@
|
||||
|
||||
resourcequotas
|
||||
^^^^^^^^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| LIST | 17.992 | 1.157 | 0.876 |
|
||||
+----------+----------+----------+----------+
|
||||
jobs
|
||||
^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| LIST | 16.852 | 16.852 | 0.807 |
|
||||
+----------+----------+----------+----------+
|
||||
secrets
|
||||
^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| GET | 23.669 | 1.605 | 1.211 |
|
||||
+----------+----------+----------+----------+
|
||||
replicasets
|
||||
^^^^^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| LIST | 52.656 | 52.656 | 1.282 |
|
||||
+----------+----------+----------+----------+
|
||||
replicationcontrollers
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| PUT | 18.369 | 5.031 | 4.116 |
|
||||
+----------+----------+----------+----------+
|
||||
| POST | 28.599 | 7.342 | 2.929 |
|
||||
+----------+----------+----------+----------+
|
||||
| DELETE | 9.61 | 4.845 | 4.137 |
|
||||
+----------+----------+----------+----------+
|
||||
| LIST | 85.6 | 53.296 | 28.359 |
|
||||
+----------+----------+----------+----------+
|
||||
| GET | 16.689 | 1.397 | 1.167 |
|
||||
+----------+----------+----------+----------+
|
||||
daemonsets
|
||||
^^^^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| LIST | 53.41 | 53.41 | 17.984 |
|
||||
+----------+----------+----------+----------+
|
||||
deployments
|
||||
^^^^^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| LIST | 19.634 | 19.634 | 9.899 |
|
||||
+----------+----------+----------+----------+
|
||||
petsets
|
||||
^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| LIST | 9.086 | 9.086 | 0.987 |
|
||||
+----------+----------+----------+----------+
|
||||
namespaces
|
||||
^^^^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| POST | 2.513 | 2.513 | 2.513 |
|
||||
+----------+----------+----------+----------+
|
||||
services
|
||||
^^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| LIST | 1.542 | 1.542 | 1.258 |
|
||||
+----------+----------+----------+----------+
|
||||
nodes
|
||||
^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| PUT | 35.889 | 7.488 | 5.77 |
|
||||
+----------+----------+----------+----------+
|
||||
| GET | 23.749 | 1.832 | 1.407 |
|
||||
+----------+----------+----------+----------+
|
||||
endpoints
|
||||
^^^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| GET | 16.444 | 1.359 | 1.095 |
|
||||
+----------+----------+----------+----------+
|
||||
pods
|
||||
^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| PUT | 26.753 | 5.988 | 4.446 |
|
||||
+----------+----------+----------+----------+
|
||||
| GET | 18.755 | 1.579 | 1.258 |
|
||||
+----------+----------+----------+----------+
|
||||
| LIST | 44.249 | 24.433 | 13.045 |
|
||||
+----------+----------+----------+----------+
|
||||
| DELETE | 23.212 | 11.478 | 9.783 |
|
||||
+----------+----------+----------+----------+
|
@ -0,0 +1,117 @@
|
||||
|
||||
resourcequotas
|
||||
^^^^^^^^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| LIST | 1.289 | 1.289 | 1.161 |
|
||||
+----------+----------+----------+----------+
|
||||
jobs
|
||||
^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| LIST | 1.564 | 1.564 | 1.564 |
|
||||
+----------+----------+----------+----------+
|
||||
secrets
|
||||
^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| GET | 8.046 | 1.709 | 1.488 |
|
||||
+----------+----------+----------+----------+
|
||||
replicasets
|
||||
^^^^^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| LIST | 1.801 | 1.801 | 1.801 |
|
||||
+----------+----------+----------+----------+
|
||||
replicationcontrollers
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| PUT | 28.672 | 5.783 | 5.244 |
|
||||
+----------+----------+----------+----------+
|
||||
| POST | 11.475 | 4.107 | 3.295 |
|
||||
+----------+----------+----------+----------+
|
||||
| GET | 3.42 | 1.563 | 1.376 |
|
||||
+----------+----------+----------+----------+
|
||||
| LIST | 25.058 | 20.305 | 11.274 |
|
||||
+----------+----------+----------+----------+
|
||||
| DELETE | 7.505 | 5.625 | 4.957 |
|
||||
+----------+----------+----------+----------+
|
||||
daemonsets
|
||||
^^^^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| LIST | 1.782 | 1.782 | 1.782 |
|
||||
+----------+----------+----------+----------+
|
||||
deployments
|
||||
^^^^^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| LIST | 1.988 | 1.988 | 1.988 |
|
||||
+----------+----------+----------+----------+
|
||||
petsets
|
||||
^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| LIST | 5.269 | 5.269 | 5.269 |
|
||||
+----------+----------+----------+----------+
|
||||
namespaces
|
||||
^^^^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| POST | 3.032 | 3.032 | 3.032 |
|
||||
+----------+----------+----------+----------+
|
||||
services
|
||||
^^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| LIST | 2.084 | 2.084 | 2.084 |
|
||||
+----------+----------+----------+----------+
|
||||
bindings
|
||||
^^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| POST | 17.604 | 5.612 | 4.728 |
|
||||
+----------+----------+----------+----------+
|
||||
endpoints
|
||||
^^^^^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| PUT | 5.118 | 4.572 | 4.109 |
|
||||
+----------+----------+----------+----------+
|
||||
| GET | 4.355 | 1.417 | 1.238 |
|
||||
+----------+----------+----------+----------+
|
||||
pods
|
||||
^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| PUT | 15.325 | 6.657 | 5.43 |
|
||||
+----------+----------+----------+----------+
|
||||
| GET | 5.453 | 1.745 | 1.498 |
|
||||
+----------+----------+----------+----------+
|
||||
| LIST | 14.656 | 4.422 | 2.943 |
|
||||
+----------+----------+----------+----------+
|
||||
| DELETE | 17.64 | 12.753 | 11.651 |
|
||||
+----------+----------+----------+----------+
|
||||
nodes
|
||||
^^^^^
|
||||
+----------+----------+----------+----------+
|
||||
| Method | Perc99 | Perc90 | Perc50 |
|
||||
+==========+==========+==========+==========+
|
||||
| PUT | 16.434 | 7.589 | 6.505 |
|
||||
+----------+----------+----------+----------+
|
||||
| GET | 3.959 | 1.836 | 1.558 |
|
||||
+----------+----------+----------+----------+
|
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 14 KiB |
@ -0,0 +1,8 @@
|
||||
Kubernetes system performance
|
||||
*****************************
|
||||
|
||||
.. toctree::
|
||||
:numbered:
|
||||
:maxdepth: 4
|
||||
|
||||
API_testing/index
|