...
1
2
3
4
19
20 package stats
21
22 import (
23 "k8s.io/klog/v2"
24
25 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26 statsapi "k8s.io/kubelet/pkg/apis/stats/v1alpha1"
27 "k8s.io/kubernetes/pkg/kubelet/cm"
28 )
29
30 func (sp *summaryProviderImpl) GetSystemContainersStats(nodeConfig cm.NodeConfig, podStats []statsapi.PodStats, updateStats bool) (stats []statsapi.ContainerStats) {
31 systemContainers := map[string]struct {
32 name string
33 forceStatsUpdate bool
34 startTime metav1.Time
35 }{
36 statsapi.SystemContainerKubelet: {name: nodeConfig.KubeletCgroupsName, forceStatsUpdate: false, startTime: sp.kubeletCreationTime},
37 statsapi.SystemContainerRuntime: {name: nodeConfig.RuntimeCgroupsName, forceStatsUpdate: false},
38 statsapi.SystemContainerMisc: {name: nodeConfig.SystemCgroupsName, forceStatsUpdate: false},
39 statsapi.SystemContainerPods: {name: sp.provider.GetPodCgroupRoot(), forceStatsUpdate: updateStats},
40 }
41 for sys, cont := range systemContainers {
42
43 if cont.name == "" {
44 continue
45 }
46 s, _, err := sp.provider.GetCgroupStats(cont.name, cont.forceStatsUpdate)
47 if err != nil {
48 klog.ErrorS(err, "Failed to get system container stats", "containerName", cont.name)
49 continue
50 }
51
52 s.Logs, s.Rootfs = nil, nil
53 s.Name = sys
54
55
56 if !cont.startTime.IsZero() {
57 s.StartTime = cont.startTime
58 }
59 stats = append(stats, *s)
60 }
61
62 return stats
63 }
64
65 func (sp *summaryProviderImpl) GetSystemContainersCPUAndMemoryStats(nodeConfig cm.NodeConfig, podStats []statsapi.PodStats, updateStats bool) (stats []statsapi.ContainerStats) {
66 systemContainers := map[string]struct {
67 name string
68 forceStatsUpdate bool
69 startTime metav1.Time
70 }{
71 statsapi.SystemContainerKubelet: {name: nodeConfig.KubeletCgroupsName, forceStatsUpdate: false, startTime: sp.kubeletCreationTime},
72 statsapi.SystemContainerRuntime: {name: nodeConfig.RuntimeCgroupsName, forceStatsUpdate: false},
73 statsapi.SystemContainerMisc: {name: nodeConfig.SystemCgroupsName, forceStatsUpdate: false},
74 statsapi.SystemContainerPods: {name: sp.provider.GetPodCgroupRoot(), forceStatsUpdate: updateStats},
75 }
76 for sys, cont := range systemContainers {
77
78 if cont.name == "" {
79 continue
80 }
81 s, err := sp.provider.GetCgroupCPUAndMemoryStats(cont.name, cont.forceStatsUpdate)
82 if err != nil {
83 klog.ErrorS(err, "Failed to get system container stats", "containerName", cont.name)
84 continue
85 }
86 s.Name = sys
87
88
89 if !cont.startTime.IsZero() {
90 s.StartTime = cont.startTime
91 }
92 stats = append(stats, *s)
93 }
94
95 return stats
96 }
97
View as plain text