mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Merge pull request #31865 from wojtek-t/higher_client_qps_in_load
Automatic merge from submit-queue Higher client qps in load Fix #31589
This commit is contained in:
		@@ -54,6 +54,7 @@ SCHEDULER_TEST_LOG_LEVEL="${SCHEDULER_TEST_LOG_LEVEL:-$TEST_CLUSTER_LOG_LEVEL}"
 | 
				
			|||||||
KUBEPROXY_TEST_LOG_LEVEL="${KUBEPROXY_TEST_LOG_LEVEL:-$TEST_CLUSTER_LOG_LEVEL}"
 | 
					KUBEPROXY_TEST_LOG_LEVEL="${KUBEPROXY_TEST_LOG_LEVEL:-$TEST_CLUSTER_LOG_LEVEL}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TEST_CLUSTER_DELETE_COLLECTION_WORKERS="${TEST_CLUSTER_DELETE_COLLECTION_WORKERS:---delete-collection-workers=16}"
 | 
					TEST_CLUSTER_DELETE_COLLECTION_WORKERS="${TEST_CLUSTER_DELETE_COLLECTION_WORKERS:---delete-collection-workers=16}"
 | 
				
			||||||
 | 
					TEST_CLUSTER_MAX_REQUESTS_INFLIGHT="${TEST_CLUSTER_MAX_REQUESTS_INFLIGHT:-}"
 | 
				
			||||||
TEST_CLUSTER_RESYNC_PERIOD="${TEST_CLUSTER_RESYNC_PERIOD:-}"
 | 
					TEST_CLUSTER_RESYNC_PERIOD="${TEST_CLUSTER_RESYNC_PERIOD:-}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
KUBEMARK_MASTER_COMPONENTS_QPS_LIMITS="${KUBEMARK_MASTER_COMPONENTS_QPS_LIMITS:-}"
 | 
					KUBEMARK_MASTER_COMPONENTS_QPS_LIMITS="${KUBEMARK_MASTER_COMPONENTS_QPS_LIMITS:-}"
 | 
				
			||||||
@@ -66,7 +67,7 @@ TEST_CLUSTER_STORAGE_CONTENT_TYPE="${TEST_CLUSTER_STORAGE_CONTENT_TYPE:-}"
 | 
				
			|||||||
ENABLE_GARBAGE_COLLECTOR=${ENABLE_GARBAGE_COLLECTOR:-true}
 | 
					ENABLE_GARBAGE_COLLECTOR=${ENABLE_GARBAGE_COLLECTOR:-true}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
KUBELET_TEST_ARGS="--max-pods=100 $TEST_CLUSTER_LOG_LEVEL ${TEST_CLUSTER_API_CONTENT_TYPE}"
 | 
					KUBELET_TEST_ARGS="--max-pods=100 $TEST_CLUSTER_LOG_LEVEL ${TEST_CLUSTER_API_CONTENT_TYPE}"
 | 
				
			||||||
APISERVER_TEST_ARGS="--runtime-config=extensions/v1beta1 ${API_SERVER_TEST_LOG_LEVEL} ${TEST_CLUSTER_STORAGE_CONTENT_TYPE} ${TEST_CLUSTER_DELETE_COLLECTION_WORKERS} --enable-garbage-collector=${ENABLE_GARBAGE_COLLECTOR}"
 | 
					APISERVER_TEST_ARGS="--runtime-config=extensions/v1beta1 ${API_SERVER_TEST_LOG_LEVEL} ${TEST_CLUSTER_STORAGE_CONTENT_TYPE} ${TEST_CLUSTER_MAX_REQUESTS_INFLIGHT} ${TEST_CLUSTER_DELETE_COLLECTION_WORKERS} --enable-garbage-collector=${ENABLE_GARBAGE_COLLECTOR}"
 | 
				
			||||||
CONTROLLER_MANAGER_TEST_ARGS="${CONTROLLER_MANAGER_TEST_LOG_LEVEL} ${TEST_CLUSTER_RESYNC_PERIOD} ${TEST_CLUSTER_API_CONTENT_TYPE} ${KUBEMARK_MASTER_COMPONENTS_QPS_LIMITS} --enable-garbage-collector=${ENABLE_GARBAGE_COLLECTOR}"
 | 
					CONTROLLER_MANAGER_TEST_ARGS="${CONTROLLER_MANAGER_TEST_LOG_LEVEL} ${TEST_CLUSTER_RESYNC_PERIOD} ${TEST_CLUSTER_API_CONTENT_TYPE} ${KUBEMARK_MASTER_COMPONENTS_QPS_LIMITS} --enable-garbage-collector=${ENABLE_GARBAGE_COLLECTOR}"
 | 
				
			||||||
SCHEDULER_TEST_ARGS="${SCHEDULER_TEST_LOG_LEVEL} ${TEST_CLUSTER_API_CONTENT_TYPE} ${KUBEMARK_MASTER_COMPONENTS_QPS_LIMITS}"
 | 
					SCHEDULER_TEST_ARGS="${SCHEDULER_TEST_LOG_LEVEL} ${TEST_CLUSTER_API_CONTENT_TYPE} ${KUBEMARK_MASTER_COMPONENTS_QPS_LIMITS}"
 | 
				
			||||||
KUBEPROXY_TEST_ARGS="${KUBEPROXY_TEST_LOG_LEVEL} ${TEST_CLUSTER_API_CONTENT_TYPE}"
 | 
					KUBEPROXY_TEST_ARGS="${KUBEPROXY_TEST_LOG_LEVEL} ${TEST_CLUSTER_API_CONTENT_TYPE}"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,7 @@ package e2e
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
 | 
						"math"
 | 
				
			||||||
	"math/rand"
 | 
						"math/rand"
 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
	"strconv"
 | 
						"strconv"
 | 
				
			||||||
@@ -70,11 +71,21 @@ var _ = framework.KubeDescribe("Load capacity", func() {
 | 
				
			|||||||
		Expect(highLatencyRequests).NotTo(BeNumerically(">", 0))
 | 
							Expect(highLatencyRequests).NotTo(BeNumerically(">", 0))
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// We assume a default throughput of 10 pods/second throughput.
 | 
				
			||||||
 | 
						// We may want to revisit it in the future.
 | 
				
			||||||
 | 
						// However, this can be overriden by LOAD_TEST_THROUGHPUT env var.
 | 
				
			||||||
 | 
						throughput := 10
 | 
				
			||||||
 | 
						if throughputEnv := os.Getenv("LOAD_TEST_THROUGHPUT"); throughputEnv != "" {
 | 
				
			||||||
 | 
							if newThroughput, err := strconv.Atoi(throughputEnv); err == nil {
 | 
				
			||||||
 | 
								throughput = newThroughput
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Explicitly put here, to delete namespace at the end of the test
 | 
						// Explicitly put here, to delete namespace at the end of the test
 | 
				
			||||||
	// (after measuring latency metrics, etc.).
 | 
						// (after measuring latency metrics, etc.).
 | 
				
			||||||
	options := framework.FrameworkOptions{
 | 
						options := framework.FrameworkOptions{
 | 
				
			||||||
		ClientQPS:   50,
 | 
							ClientQPS:   float32(math.Max(50.0, float64(2*throughput))),
 | 
				
			||||||
		ClientBurst: 100,
 | 
							ClientBurst: int(math.Max(100.0, float64(4*throughput))),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	f := framework.NewFramework("load", options, nil)
 | 
						f := framework.NewFramework("load", options, nil)
 | 
				
			||||||
	f.NamespaceDeletionTimeout = time.Hour
 | 
						f.NamespaceDeletionTimeout = time.Hour
 | 
				
			||||||
@@ -142,16 +153,6 @@ var _ = framework.KubeDescribe("Load capacity", func() {
 | 
				
			|||||||
				framework.Logf("Skipping service creation")
 | 
									framework.Logf("Skipping service creation")
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			// We assume a default throughput of 10 pods/second throughput.
 | 
					 | 
				
			||||||
			// We may want to revisit it in the future.
 | 
					 | 
				
			||||||
			// However, this can be overriden by LOAD_TEST_THROUGHPUT env var.
 | 
					 | 
				
			||||||
			throughput := 10
 | 
					 | 
				
			||||||
			if throughputEnv := os.Getenv("LOAD_TEST_THROUGHPUT"); throughputEnv != "" {
 | 
					 | 
				
			||||||
				if newThroughput, err := strconv.Atoi(throughputEnv); err == nil {
 | 
					 | 
				
			||||||
					throughput = newThroughput
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			// Simulate lifetime of RC:
 | 
								// Simulate lifetime of RC:
 | 
				
			||||||
			//  * create with initial size
 | 
								//  * create with initial size
 | 
				
			||||||
			//  * scale RC to a random size and list all pods
 | 
								//  * scale RC to a random size and list all pods
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user