diff --git a/hack/.import-aliases b/hack/.import-aliases index 2c63c085104..302f9bfd9eb 100644 --- a/hack/.import-aliases +++ b/hack/.import-aliases @@ -1,2 +1,3 @@ { + "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1": "kubeletstatsv1alpha1" } diff --git a/test/e2e/framework/kubelet_stats.go b/test/e2e/framework/kubelet_stats.go index 7623795be42..68f2d043717 100644 --- a/test/e2e/framework/kubelet_stats.go +++ b/test/e2e/framework/kubelet_stats.go @@ -34,7 +34,7 @@ import ( "k8s.io/apimachinery/pkg/util/wait" clientset "k8s.io/client-go/kubernetes" - stats "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" + kubeletstatsv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" dockermetrics "k8s.io/kubernetes/pkg/kubelet/dockershim/metrics" kubeletmetrics "k8s.io/kubernetes/pkg/kubelet/metrics" "k8s.io/kubernetes/pkg/master/ports" @@ -284,7 +284,7 @@ func HighLatencyKubeletOperations(c clientset.Interface, threshold time.Duration } // GetStatsSummary contacts kubelet for the container information. -func GetStatsSummary(c clientset.Interface, nodeName string) (*stats.Summary, error) { +func GetStatsSummary(c clientset.Interface, nodeName string) (*kubeletstatsv1alpha1.Summary, error) { ctx, cancel := context.WithTimeout(context.Background(), SingleCallTimeout) defer cancel() @@ -300,7 +300,7 @@ func GetStatsSummary(c clientset.Interface, nodeName string) (*stats.Summary, er return nil, err } - summary := stats.Summary{} + summary := kubeletstatsv1alpha1.Summary{} err = json.Unmarshal(data, &summary) if err != nil { return nil, err @@ -355,7 +355,7 @@ func getOneTimeResourceUsageOnNode( return nil, err } - f := func(name string, newStats *stats.ContainerStats) *ContainerResourceUsage { + f := func(name string, newStats *kubeletstatsv1alpha1.ContainerStats) *ContainerResourceUsage { if newStats == nil || newStats.CPU == nil || newStats.Memory == nil { return nil } @@ -394,7 +394,7 @@ func getOneTimeResourceUsageOnNode( return usageMap, nil } -func getNodeStatsSummary(c clientset.Interface, nodeName string) (*stats.Summary, error) { +func getNodeStatsSummary(c clientset.Interface, nodeName string) (*kubeletstatsv1alpha1.Summary, error) { data, err := c.CoreV1().RESTClient().Get(). Resource("nodes"). SubResource("proxy"). @@ -407,7 +407,7 @@ func getNodeStatsSummary(c clientset.Interface, nodeName string) (*stats.Summary return nil, err } - var summary *stats.Summary + var summary *kubeletstatsv1alpha1.Summary err = json.Unmarshal(data, &summary) if err != nil { return nil, err @@ -415,16 +415,16 @@ func getNodeStatsSummary(c clientset.Interface, nodeName string) (*stats.Summary return summary, nil } -func getSystemContainerStats(summary *stats.Summary) map[string]*stats.ContainerStats { +func getSystemContainerStats(summary *kubeletstatsv1alpha1.Summary) map[string]*kubeletstatsv1alpha1.ContainerStats { statsList := summary.Node.SystemContainers - statsMap := make(map[string]*stats.ContainerStats) + statsMap := make(map[string]*kubeletstatsv1alpha1.ContainerStats) for i := range statsList { statsMap[statsList[i].Name] = &statsList[i] } // Create a root container stats using information available in // stats.NodeStats. This is necessary since it is a different type. - statsMap[rootContainerName] = &stats.ContainerStats{ + statsMap[rootContainerName] = &kubeletstatsv1alpha1.ContainerStats{ CPU: summary.Node.CPU, Memory: summary.Node.Memory, } @@ -439,8 +439,8 @@ const ( func TargetContainers() []string { return []string{ rootContainerName, - stats.SystemContainerRuntime, - stats.SystemContainerKubelet, + kubeletstatsv1alpha1.SystemContainerRuntime, + kubeletstatsv1alpha1.SystemContainerKubelet, } } @@ -507,10 +507,10 @@ func GetKubeletHeapStats(c clientset.Interface, nodeName string) (string, error) if errRaw != nil { return "", err } - stats := string(raw) + kubeletstatsv1alpha1 := string(raw) // Only dumping the runtime.MemStats numbers to avoid polluting the log. numLines := 23 - lines := strings.Split(stats, "\n") + lines := strings.Split(kubeletstatsv1alpha1, "\n") return strings.Join(lines[len(lines)-numLines:], "\n"), nil } @@ -530,7 +530,7 @@ func PrintAllKubeletPods(c clientset.Interface, nodeName string) { } } -func computeContainerResourceUsage(name string, oldStats, newStats *stats.ContainerStats) *ContainerResourceUsage { +func computeContainerResourceUsage(name string, oldStats, newStats *kubeletstatsv1alpha1.ContainerStats) *ContainerResourceUsage { return &ContainerResourceUsage{ Name: name, Timestamp: newStats.CPU.Time.Time, @@ -570,7 +570,7 @@ func newResourceCollector(c clientset.Interface, nodeName string, containerNames func (r *resourceCollector) Start() { r.stopCh = make(chan struct{}, 1) // Keep the last observed stats for comparison. - oldStats := make(map[string]*stats.ContainerStats) + oldStats := make(map[string]*kubeletstatsv1alpha1.ContainerStats) go wait.Until(func() { r.collectStats(oldStats) }, r.pollingInterval, r.stopCh) } @@ -581,7 +581,7 @@ func (r *resourceCollector) Stop() { // collectStats gets the latest stats from kubelet stats summary API, computes // the resource usage, and pushes it to the buffer. -func (r *resourceCollector) collectStats(oldStatsMap map[string]*stats.ContainerStats) { +func (r *resourceCollector) collectStats(oldStatsMap map[string]*kubeletstatsv1alpha1.ContainerStats) { summary, err := getNodeStatsSummary(r.client, r.node) if err != nil { e2elog.Logf("Error getting node stats summary on %q, err: %v", r.node, err) @@ -612,15 +612,15 @@ func (r *resourceCollector) collectStats(oldStatsMap map[string]*stats.Container func (r *resourceCollector) GetLatest() (ResourceUsagePerContainer, error) { r.lock.RLock() defer r.lock.RUnlock() - stats := make(ResourceUsagePerContainer) + kubeletstatsv1alpha1 := make(ResourceUsagePerContainer) for _, name := range r.containers { contStats, ok := r.buffers[name] if !ok || len(contStats) == 0 { return nil, fmt.Errorf("Resource usage on node %q is not ready yet", r.node) } - stats[name] = contStats[len(contStats)-1] + kubeletstatsv1alpha1[name] = contStats[len(contStats)-1] } - return stats, nil + return kubeletstatsv1alpha1, nil } // Reset frees the stats and start over. diff --git a/test/e2e/node/kubelet_perf.go b/test/e2e/node/kubelet_perf.go index 1ea541e51d6..753ff3e3e43 100644 --- a/test/e2e/node/kubelet_perf.go +++ b/test/e2e/node/kubelet_perf.go @@ -24,7 +24,7 @@ import ( "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/uuid" clientset "k8s.io/client-go/kubernetes" - stats "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" + kubeletstatsv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" "k8s.io/kubernetes/test/e2e/framework" e2elog "k8s.io/kubernetes/test/e2e/framework/log" testutils "k8s.io/kubernetes/test/utils" @@ -234,24 +234,24 @@ var _ = SIGDescribe("Kubelet [Serial] [Slow]", func() { { podsPerNode: 0, cpuLimits: framework.ContainersCPUSummary{ - stats.SystemContainerKubelet: {0.50: 0.10, 0.95: 0.20}, - stats.SystemContainerRuntime: {0.50: 0.10, 0.95: 0.20}, + kubeletstatsv1alpha1.SystemContainerKubelet: {0.50: 0.10, 0.95: 0.20}, + kubeletstatsv1alpha1.SystemContainerRuntime: {0.50: 0.10, 0.95: 0.20}, }, memLimits: framework.ResourceUsagePerContainer{ - stats.SystemContainerKubelet: &framework.ContainerResourceUsage{MemoryRSSInBytes: 200 * 1024 * 1024}, + kubeletstatsv1alpha1.SystemContainerKubelet: &framework.ContainerResourceUsage{MemoryRSSInBytes: 200 * 1024 * 1024}, // The detail can be found at https://github.com/kubernetes/kubernetes/issues/28384#issuecomment-244158892 - stats.SystemContainerRuntime: &framework.ContainerResourceUsage{MemoryRSSInBytes: 125 * 1024 * 1024}, + kubeletstatsv1alpha1.SystemContainerRuntime: &framework.ContainerResourceUsage{MemoryRSSInBytes: 125 * 1024 * 1024}, }, }, { cpuLimits: framework.ContainersCPUSummary{ - stats.SystemContainerKubelet: {0.50: 0.35, 0.95: 0.50}, - stats.SystemContainerRuntime: {0.50: 0.10, 0.95: 0.50}, + kubeletstatsv1alpha1.SystemContainerKubelet: {0.50: 0.35, 0.95: 0.50}, + kubeletstatsv1alpha1.SystemContainerRuntime: {0.50: 0.10, 0.95: 0.50}, }, podsPerNode: 100, memLimits: framework.ResourceUsagePerContainer{ - stats.SystemContainerKubelet: &framework.ContainerResourceUsage{MemoryRSSInBytes: 300 * 1024 * 1024}, - stats.SystemContainerRuntime: &framework.ContainerResourceUsage{MemoryRSSInBytes: 350 * 1024 * 1024}, + kubeletstatsv1alpha1.SystemContainerKubelet: &framework.ContainerResourceUsage{MemoryRSSInBytes: 300 * 1024 * 1024}, + kubeletstatsv1alpha1.SystemContainerRuntime: &framework.ContainerResourceUsage{MemoryRSSInBytes: 350 * 1024 * 1024}, }, }, } diff --git a/test/e2e_node/density_test.go b/test/e2e_node/density_test.go index c386ba7be55..bc0d2d91a3c 100644 --- a/test/e2e_node/density_test.go +++ b/test/e2e_node/density_test.go @@ -32,7 +32,7 @@ import ( "k8s.io/apimachinery/pkg/watch" "k8s.io/client-go/tools/cache" kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config" - stats "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" + kubeletstatsv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" kubemetrics "k8s.io/kubernetes/pkg/kubelet/metrics" "k8s.io/kubernetes/test/e2e/framework" e2elog "k8s.io/kubernetes/test/e2e/framework/log" @@ -77,12 +77,12 @@ var _ = framework.KubeDescribe("Density [Serial] [Slow]", func() { podsNr: 10, interval: 0 * time.Millisecond, cpuLimits: framework.ContainersCPUSummary{ - stats.SystemContainerKubelet: {0.50: 0.30, 0.95: 0.50}, - stats.SystemContainerRuntime: {0.50: 0.40, 0.95: 0.60}, + kubeletstatsv1alpha1.SystemContainerKubelet: {0.50: 0.30, 0.95: 0.50}, + kubeletstatsv1alpha1.SystemContainerRuntime: {0.50: 0.40, 0.95: 0.60}, }, memLimits: framework.ResourceUsagePerContainer{ - stats.SystemContainerKubelet: &framework.ContainerResourceUsage{MemoryRSSInBytes: 100 * 1024 * 1024}, - stats.SystemContainerRuntime: &framework.ContainerResourceUsage{MemoryRSSInBytes: 500 * 1024 * 1024}, + kubeletstatsv1alpha1.SystemContainerKubelet: &framework.ContainerResourceUsage{MemoryRSSInBytes: 100 * 1024 * 1024}, + kubeletstatsv1alpha1.SystemContainerRuntime: &framework.ContainerResourceUsage{MemoryRSSInBytes: 500 * 1024 * 1024}, }, // percentile limit of single pod startup latency podStartupLimits: framework.LatencyMetric{ @@ -224,12 +224,12 @@ var _ = framework.KubeDescribe("Density [Serial] [Slow]", func() { podsNr: 10, bgPodsNr: 50, cpuLimits: framework.ContainersCPUSummary{ - stats.SystemContainerKubelet: {0.50: 0.30, 0.95: 0.50}, - stats.SystemContainerRuntime: {0.50: 0.40, 0.95: 0.60}, + kubeletstatsv1alpha1.SystemContainerKubelet: {0.50: 0.30, 0.95: 0.50}, + kubeletstatsv1alpha1.SystemContainerRuntime: {0.50: 0.40, 0.95: 0.60}, }, memLimits: framework.ResourceUsagePerContainer{ - stats.SystemContainerKubelet: &framework.ContainerResourceUsage{MemoryRSSInBytes: 100 * 1024 * 1024}, - stats.SystemContainerRuntime: &framework.ContainerResourceUsage{MemoryRSSInBytes: 500 * 1024 * 1024}, + kubeletstatsv1alpha1.SystemContainerKubelet: &framework.ContainerResourceUsage{MemoryRSSInBytes: 100 * 1024 * 1024}, + kubeletstatsv1alpha1.SystemContainerRuntime: &framework.ContainerResourceUsage{MemoryRSSInBytes: 500 * 1024 * 1024}, }, podStartupLimits: framework.LatencyMetric{ Perc50: 5000 * time.Millisecond, diff --git a/test/e2e_node/eviction_test.go b/test/e2e_node/eviction_test.go index a3ee5f4434c..6d9702978b8 100644 --- a/test/e2e_node/eviction_test.go +++ b/test/e2e_node/eviction_test.go @@ -30,7 +30,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/fields" kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config" - stats "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" + kubeletstatsv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" "k8s.io/kubernetes/pkg/kubelet/eviction" evictionapi "k8s.io/kubernetes/pkg/kubelet/eviction/api" kubeletmetrics "k8s.io/kubernetes/pkg/kubelet/metrics" @@ -751,7 +751,7 @@ func logMemoryMetrics() { e2elog.Logf("Node.Memory.WorkingSetBytes: %d, Node.Memory.AvailableBytes: %d", *summary.Node.Memory.WorkingSetBytes, *summary.Node.Memory.AvailableBytes) } for _, sysContainer := range summary.Node.SystemContainers { - if sysContainer.Name == stats.SystemContainerPods && sysContainer.Memory != nil && sysContainer.Memory.WorkingSetBytes != nil && sysContainer.Memory.AvailableBytes != nil { + if sysContainer.Name == kubeletstatsv1alpha1.SystemContainerPods && sysContainer.Memory != nil && sysContainer.Memory.WorkingSetBytes != nil && sysContainer.Memory.AvailableBytes != nil { e2elog.Logf("Allocatable.Memory.WorkingSetBytes: %d, Allocatable.Memory.AvailableBytes: %d", *sysContainer.Memory.WorkingSetBytes, *sysContainer.Memory.AvailableBytes) } } @@ -776,7 +776,7 @@ func logPidMetrics() { } } -func eventuallyGetSummary() (s *stats.Summary) { +func eventuallyGetSummary() (s *kubeletstatsv1alpha1.Summary) { Eventually(func() error { summary, err := getNodeSummary() if err != nil { diff --git a/test/e2e_node/resource_collector.go b/test/e2e_node/resource_collector.go index 63b159e46bd..c7d83469ffe 100644 --- a/test/e2e_node/resource_collector.go +++ b/test/e2e_node/resource_collector.go @@ -40,7 +40,7 @@ import ( "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/uuid" "k8s.io/apimachinery/pkg/util/wait" - stats "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" + kubeletstatsv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" "k8s.io/kubernetes/pkg/util/procfs" "k8s.io/kubernetes/test/e2e/framework" e2elog "k8s.io/kubernetes/test/e2e/framework/log" @@ -91,8 +91,8 @@ func (r *ResourceCollector) Start() { runtimeContainer, err2 := getContainerNameForProcess(framework.TestContext.ContainerRuntimeProcessName, framework.TestContext.ContainerRuntimePidFile) if err1 == nil && err2 == nil { systemContainers = map[string]string{ - stats.SystemContainerKubelet: kubeletContainer, - stats.SystemContainerRuntime: runtimeContainer, + kubeletstatsv1alpha1.SystemContainerKubelet: kubeletContainer, + kubeletstatsv1alpha1.SystemContainerRuntime: runtimeContainer, } } else { framework.Failf("Failed to get runtime container name in test-e2e-node resource collector.") @@ -189,15 +189,15 @@ func computeContainerResourceUsage(name string, oldStats, newStats *cadvisorapiv func (r *ResourceCollector) GetLatest() (framework.ResourceUsagePerContainer, error) { r.lock.RLock() defer r.lock.RUnlock() - stats := make(framework.ResourceUsagePerContainer) + kubeletstatsv1alpha1 := make(framework.ResourceUsagePerContainer) for key, name := range systemContainers { contStats, ok := r.buffers[name] if !ok || len(contStats) == 0 { return nil, fmt.Errorf("No resource usage data for %s container (%s)", key, name) } - stats[key] = contStats[len(contStats)-1] + kubeletstatsv1alpha1[key] = contStats[len(contStats)-1] } - return stats, nil + return kubeletstatsv1alpha1, nil } type resourceUsageByCPU []*framework.ContainerResourceUsage diff --git a/test/e2e_node/resource_usage_test.go b/test/e2e_node/resource_usage_test.go index 63eb678217b..7c4fc112345 100644 --- a/test/e2e_node/resource_usage_test.go +++ b/test/e2e_node/resource_usage_test.go @@ -24,7 +24,7 @@ import ( "time" clientset "k8s.io/client-go/kubernetes" - stats "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" + kubeletstatsv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" "k8s.io/kubernetes/test/e2e/framework" e2elog "k8s.io/kubernetes/test/e2e/framework/log" imageutils "k8s.io/kubernetes/test/utils/image" @@ -69,12 +69,12 @@ var _ = SIGDescribe("Resource-usage [Serial] [Slow]", func() { { podsNr: 10, cpuLimits: framework.ContainersCPUSummary{ - stats.SystemContainerKubelet: {0.50: 0.30, 0.95: 0.35}, - stats.SystemContainerRuntime: {0.50: 0.30, 0.95: 0.40}, + kubeletstatsv1alpha1.SystemContainerKubelet: {0.50: 0.30, 0.95: 0.35}, + kubeletstatsv1alpha1.SystemContainerRuntime: {0.50: 0.30, 0.95: 0.40}, }, memLimits: framework.ResourceUsagePerContainer{ - stats.SystemContainerKubelet: &framework.ContainerResourceUsage{MemoryRSSInBytes: 200 * 1024 * 1024}, - stats.SystemContainerRuntime: &framework.ContainerResourceUsage{MemoryRSSInBytes: 400 * 1024 * 1024}, + kubeletstatsv1alpha1.SystemContainerKubelet: &framework.ContainerResourceUsage{MemoryRSSInBytes: 200 * 1024 * 1024}, + kubeletstatsv1alpha1.SystemContainerRuntime: &framework.ContainerResourceUsage{MemoryRSSInBytes: 400 * 1024 * 1024}, }, }, } diff --git a/test/e2e_node/summary_test.go b/test/e2e_node/summary_test.go index e50d91d2bde..57eb358343a 100644 --- a/test/e2e_node/summary_test.go +++ b/test/e2e_node/summary_test.go @@ -26,7 +26,7 @@ import ( "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - stats "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" + kubeletstatsv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" "k8s.io/kubernetes/test/e2e/framework" e2elog "k8s.io/kubernetes/test/e2e/framework/log" "k8s.io/kubernetes/test/e2e/framework/volume" @@ -382,13 +382,13 @@ func getSummaryTestPods(f *framework.Framework, numRestarts int32, names ...stri // Mapping function for gstruct.MatchAllElements func summaryObjectID(element interface{}) string { switch el := element.(type) { - case stats.PodStats: + case kubeletstatsv1alpha1.PodStats: return fmt.Sprintf("%s::%s", el.PodRef.Namespace, el.PodRef.Name) - case stats.ContainerStats: + case kubeletstatsv1alpha1.ContainerStats: return el.Name - case stats.VolumeStats: + case kubeletstatsv1alpha1.VolumeStats: return el.Name - case stats.UserDefinedMetric: + case kubeletstatsv1alpha1.UserDefinedMetric: return el.Name default: framework.Failf("Unknown type: %T", el) diff --git a/test/e2e_node/util.go b/test/e2e_node/util.go index c44f28c6f8b..26512ffe874 100644 --- a/test/e2e_node/util.go +++ b/test/e2e_node/util.go @@ -43,7 +43,7 @@ import ( kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config" "k8s.io/kubernetes/pkg/kubelet/apis/podresources" podresourcesapi "k8s.io/kubernetes/pkg/kubelet/apis/podresources/v1alpha1" - stats "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" + kubeletstatsv1alpha1 "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1" "k8s.io/kubernetes/pkg/kubelet/cm" kubeletconfigcodec "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/codec" kubeletmetrics "k8s.io/kubernetes/pkg/kubelet/metrics" @@ -75,7 +75,7 @@ const ( defaultPodResourcesMaxSize = 1024 * 1024 * 16 // 16 Mb ) -func getNodeSummary() (*stats.Summary, error) { +func getNodeSummary() (*kubeletstatsv1alpha1.Summary, error) { req, err := http.NewRequest("GET", *kubeletAddress+"/stats/summary", nil) if err != nil { return nil, fmt.Errorf("failed to build http request: %v", err) @@ -95,7 +95,7 @@ func getNodeSummary() (*stats.Summary, error) { } decoder := json.NewDecoder(strings.NewReader(string(contentsBytes))) - summary := stats.Summary{} + summary := kubeletstatsv1alpha1.Summary{} err = decoder.Decode(&summary) if err != nil { return nil, fmt.Errorf("failed to parse /stats/summary to go struct: %+v", resp)