mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-30 21:30:16 +00:00 
			
		
		
		
	log age of stats used for evictions during eviction tests
This commit is contained in:
		| @@ -109,9 +109,13 @@ func GetKubeletLatencyMetrics(ms metrics.KubeletMetrics) KubeletLatencyMetrics { | |||||||
| 		kubeletmetrics.PodWorkerStartLatencyKey, | 		kubeletmetrics.PodWorkerStartLatencyKey, | ||||||
| 		kubeletmetrics.PLEGRelistLatencyKey, | 		kubeletmetrics.PLEGRelistLatencyKey, | ||||||
| 	) | 	) | ||||||
|  | 	return GetKubeletMetrics(ms, latencyMethods) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func GetKubeletMetrics(ms metrics.KubeletMetrics, methods sets.String) KubeletLatencyMetrics { | ||||||
| 	var latencyMetrics KubeletLatencyMetrics | 	var latencyMetrics KubeletLatencyMetrics | ||||||
| 	for method, samples := range ms { | 	for method, samples := range ms { | ||||||
| 		if !latencyMethods.Has(method) { | 		if !methods.Has(method) { | ||||||
| 			continue | 			continue | ||||||
| 		} | 		} | ||||||
| 		for _, sample := range samples { | 		for _, sample := range samples { | ||||||
|   | |||||||
| @@ -34,7 +34,9 @@ go_library( | |||||||
|         "//pkg/kubelet/apis/cri:go_default_library", |         "//pkg/kubelet/apis/cri:go_default_library", | ||||||
|         "//pkg/kubelet/apis/cri/v1alpha1:go_default_library", |         "//pkg/kubelet/apis/cri/v1alpha1:go_default_library", | ||||||
|         "//pkg/kubelet/apis/stats/v1alpha1:go_default_library", |         "//pkg/kubelet/apis/stats/v1alpha1:go_default_library", | ||||||
|  |         "//pkg/kubelet/metrics:go_default_library", | ||||||
|         "//pkg/kubelet/remote:go_default_library", |         "//pkg/kubelet/remote:go_default_library", | ||||||
|  |         "//pkg/metrics:go_default_library", | ||||||
|         "//pkg/util/procfs:go_default_library", |         "//pkg/util/procfs:go_default_library", | ||||||
|         "//test/e2e/common:go_default_library", |         "//test/e2e/common:go_default_library", | ||||||
|         "//test/e2e/framework:go_default_library", |         "//test/e2e/framework:go_default_library", | ||||||
|   | |||||||
| @@ -24,6 +24,7 @@ import ( | |||||||
| 	"k8s.io/kubernetes/pkg/api/v1" | 	"k8s.io/kubernetes/pkg/api/v1" | ||||||
| 	nodeutil "k8s.io/kubernetes/pkg/api/v1/node" | 	nodeutil "k8s.io/kubernetes/pkg/api/v1/node" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/componentconfig" | 	"k8s.io/kubernetes/pkg/apis/componentconfig" | ||||||
|  | 	kubeletmetrics "k8s.io/kubernetes/pkg/kubelet/metrics" | ||||||
| 	"k8s.io/kubernetes/test/e2e/framework" | 	"k8s.io/kubernetes/test/e2e/framework" | ||||||
|  |  | ||||||
| 	. "github.com/onsi/ginkgo" | 	. "github.com/onsi/ginkgo" | ||||||
| @@ -175,6 +176,7 @@ func runEvictionTest(f *framework.Framework, testCondition string, podTestSpecs | |||||||
| 			for _, p := range updatedPods { | 			for _, p := range updatedPods { | ||||||
| 				framework.Logf("fetching pod %s; phase= %v", p.Name, p.Status.Phase) | 				framework.Logf("fetching pod %s; phase= %v", p.Name, p.Status.Phase) | ||||||
| 			} | 			} | ||||||
|  | 			logKubeletMetrics(kubeletmetrics.EvictionStatsAgeKey) | ||||||
| 			_, err = hasPressureCondition(f, testCondition) | 			_, err = hasPressureCondition(f, testCondition) | ||||||
| 			if err != nil { | 			if err != nil { | ||||||
| 				return err | 				return err | ||||||
| @@ -261,6 +263,7 @@ func runEvictionTest(f *framework.Framework, testCondition string, podTestSpecs | |||||||
| 				if priorityPodSpec.evictionPriority == 0 { | 				if priorityPodSpec.evictionPriority == 0 { | ||||||
| 					for _, p := range updatedPodList.Items { | 					for _, p := range updatedPodList.Items { | ||||||
| 						if p.Name == priorityPodSpec.pod.Name && p.Status.Phase == v1.PodFailed { | 						if p.Name == priorityPodSpec.pod.Name && p.Status.Phase == v1.PodFailed { | ||||||
|  | 							logKubeletMetrics(kubeletmetrics.EvictionStatsAgeKey) | ||||||
| 							return fmt.Errorf("%s pod failed (delayed) and shouldn't have failed", p.Name) | 							return fmt.Errorf("%s pod failed (delayed) and shouldn't have failed", p.Name) | ||||||
| 						} | 						} | ||||||
| 					} | 					} | ||||||
|   | |||||||
| @@ -30,12 +30,14 @@ import ( | |||||||
|  |  | ||||||
| 	k8serr "k8s.io/apimachinery/pkg/api/errors" | 	k8serr "k8s.io/apimachinery/pkg/api/errors" | ||||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||||
|  | 	"k8s.io/apimachinery/pkg/util/sets" | ||||||
| 	"k8s.io/kubernetes/pkg/api" | 	"k8s.io/kubernetes/pkg/api" | ||||||
| 	"k8s.io/kubernetes/pkg/api/v1" | 	"k8s.io/kubernetes/pkg/api/v1" | ||||||
| 	"k8s.io/kubernetes/pkg/apis/componentconfig" | 	"k8s.io/kubernetes/pkg/apis/componentconfig" | ||||||
| 	v1alpha1 "k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1" | 	v1alpha1 "k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1" | ||||||
| 	stats "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" | 	stats "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" | ||||||
| 	// utilconfig "k8s.io/kubernetes/pkg/util/config" | 	kubeletmetrics "k8s.io/kubernetes/pkg/kubelet/metrics" | ||||||
|  | 	"k8s.io/kubernetes/pkg/metrics" | ||||||
| 	"k8s.io/kubernetes/test/e2e/framework" | 	"k8s.io/kubernetes/test/e2e/framework" | ||||||
|  |  | ||||||
| 	. "github.com/onsi/ginkgo" | 	. "github.com/onsi/ginkgo" | ||||||
| @@ -292,3 +294,17 @@ func getLocalNode(f *framework.Framework) *v1.Node { | |||||||
| 	Expect(len(nodeList.Items)).To(Equal(1), "Unexpected number of node objects for node e2e. Expects only one node.") | 	Expect(len(nodeList.Items)).To(Equal(1), "Unexpected number of node objects for node e2e. Expects only one node.") | ||||||
| 	return &nodeList.Items[0] | 	return &nodeList.Items[0] | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // logs prometheus metrics from the local kubelet. | ||||||
|  | func logKubeletMetrics(metricKeys ...string) { | ||||||
|  | 	metricSet := sets.NewString() | ||||||
|  | 	for _, key := range metricKeys { | ||||||
|  | 		metricSet.Insert(kubeletmetrics.KubeletSubsystem + "_" + key) | ||||||
|  | 	} | ||||||
|  | 	metric, err := metrics.GrabKubeletMetricsWithoutProxy(framework.TestContext.NodeName + ":10255") | ||||||
|  | 	if err != nil { | ||||||
|  | 		framework.Logf("Error getting kubelet metrics: %v", err) | ||||||
|  | 	} else { | ||||||
|  | 		framework.Logf("Kubelet Metrics: %+v", framework.GetKubeletMetrics(metric, metricSet)) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user