[TOOL] Stressor for Kubernetes Environments. 31/73331/2
authorSridhar K. N. Rao <srao@linuxfoundation.org>
Mon, 2 May 2022 13:49:18 +0000 (19:19 +0530)
committerSridhar K. N. Rao <srao@linuxfoundation.org>
Fri, 13 May 2022 06:24:06 +0000 (11:54 +0530)
This stressor is based on Spirent-cloudstress.

Add license information

Signed-off-by: Sridhar K. N. Rao <srao@linuxfoundation.org>
Change-Id: Id43fd7603ed32d88b8adcd33f8becf0106bc3f46

tools/k8s/load-generator/Dockerfile [new file with mode: 0644]
tools/k8s/load-generator/README.md [new file with mode: 0755]
tools/k8s/load-generator/config.zpl [new file with mode: 0755]
tools/k8s/load-generator/csdeployment.yaml [new file with mode: 0644]

diff --git a/tools/k8s/load-generator/Dockerfile b/tools/k8s/load-generator/Dockerfile
new file mode 100644 (file)
index 0000000..6212f6b
--- /dev/null
@@ -0,0 +1,27 @@
+# Copyright 2022 The Linux Foundation.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+FROM debian:bullseye
+RUN mkdir -p /opt/spirent/inception
+EXPOSE 3357
+EXPOSE 13731
+EXPOSE 13771
+EXPOSE 17731
+RUN apt-get clean && \
+    apt-get update && \
+    apt-get install -y net-tools procps
+COPY ./config.zpl /opt/spirent/inception/config.zpl
+COPY ./cloudstress /opt/spirent/inception/cloudstress
+WORKDIR /opt/spirent/inception
+CMD ["cloudstress", "--conffile", "config.zpl"]
diff --git a/tools/k8s/load-generator/README.md b/tools/k8s/load-generator/README.md
new file mode 100755 (executable)
index 0000000..3b03a9b
--- /dev/null
@@ -0,0 +1,24 @@
+# Stressor for Cloud-Native Usecases using Spirent Cloudstress\r
+\r
+## Updating the configuration\r
+\r
+Modify the config.zpl file according to your requirements - configure the required amount of CPU and Memory stresses.\r
+\r
+##  Building container (if required)\r
+\r
+Download the cloudstress binary from the artifacts.\r
+\r
+Build using the following command\r
+\r
+```sh\r
+$ docker build --rm -t autocloudstress .\r
+```\r
+\r
+## Using existing container.\r
+\r
+Pre-built container exists in dockerhub as: vsperf/autocloudstress:thoth\r
+\r
+## Running workloads.\r
+\r
+Run the built or existing container as pods.\r
+Example deployment file: csdeployment.yaml present in this folder.\r
diff --git a/tools/k8s/load-generator/config.zpl b/tools/k8s/load-generator/config.zpl
new file mode 100755 (executable)
index 0000000..a0dbc28
--- /dev/null
@@ -0,0 +1,52 @@
+# Copyright 2022 Spirent Communications.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+#rfc.zeromq.org/spec:4/ZPL
+
+generator
+    cpu
+        utilization = 100.0
+        running = "true"
+    block
+        writes_per_sec = 1048576
+        write_size = 2M
+        reads_per_sec = 1048576
+        read_size = 2M
+        queue_depth = 4
+        vdev_path = "/tmp"
+        vdev_size = 1048576000
+        file_size = 1000
+        running = "true"
+        pattern = "random"
+    memory
+        writes_per_sec = 1048576
+        write_size = 2000000
+        reads_per_sec = 1048576
+        read_size = 2000000
+        buffer_size = 250000000
+        running = "true"
+        pattern = "random"
+    network.client
+        connections = 10
+        threads = 5
+        ops_per_connection = 10
+        protocol = tcp
+        writes_per_sec = 1043576
+        write_size = 2000000
+        reads_per_sec = 1043576
+        read_size = 2000000
+        running = "true"
+    network.server
+        running = "true"
diff --git a/tools/k8s/load-generator/csdeployment.yaml b/tools/k8s/load-generator/csdeployment.yaml
new file mode 100644 (file)
index 0000000..e6d32d5
--- /dev/null
@@ -0,0 +1,39 @@
+# Copyright 2022 The Linux Foundation.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: cloudstress-deployment
+spec:
+  selector:
+    matchLabels:
+      app: cloudstress
+  replicas: 2 # tells deployment to run 2 pods matching the template
+  template:
+    metadata:
+      labels:
+        app: cloudstress
+    spec:
+      containers:
+      - name: cloudstress
+        image: vsperf/autocloudstress:thoth
+        resources:
+          requests:
+            cpu: "2000m"
+            memory: "2000Mi"
+          limits:
+            cpu: "2000m"
+            memory: "2000Mi"