Documentation ¶
Overview ¶
Package stats handles exporting Kubelet and container stats. NOTE: We intend to move this functionality into a standalone pod, so this package should be very loosely coupled to the rest of the Kubelet.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CreateHandlers ¶
func CreateHandlers(rootPath string, provider Provider, summaryProvider SummaryProvider) *restful.WebService
CreateHandlers creates the REST handlers for the stats.
Types ¶
type PodVolumeStats ¶
type PodVolumeStats struct { EphemeralVolumes []stats.VolumeStats PersistentVolumes []stats.VolumeStats }
PodVolumeStats encapsulates the VolumeStats for a pod. It consists of two lists, for local ephemeral volumes, and for persistent volumes respectively.
type Provider ¶ added in v1.14.0
type Provider interface { // The following stats are provided by either CRI or cAdvisor. // // ListPodStats returns the stats of all the containers managed by pods. ListPodStats(ctx context.Context) ([]statsapi.PodStats, error) // ListPodStatsAndUpdateCPUNanoCoreUsage updates the cpu nano core usage for // the containers and returns the stats for all the pod-managed containers. ListPodCPUAndMemoryStats(ctx context.Context) ([]statsapi.PodStats, error) // ListPodStatsAndUpdateCPUNanoCoreUsage returns the stats of all the // containers managed by pods and force update the cpu usageNanoCores. // This is a workaround for CRI runtimes that do not integrate with // cadvisor. See https://github.com/kubernetes/kubernetes/issues/72788 // for more details. ListPodStatsAndUpdateCPUNanoCoreUsage(ctx context.Context) ([]statsapi.PodStats, error) // ImageFsStats returns the stats of the image filesystem. // Kubelet allows three options for container filesystems // Everything is on node fs (so no image filesystem) // Container storage is on a dedicated disk (imageFs is separate from root) // Container Filesystem is on root and Images are stored on ImageFs // First return parameter is the image filesystem and // second parameter is the container filesystem ImageFsStats(ctx context.Context) (imageFs *statsapi.FsStats, containerFs *statsapi.FsStats, callErr error) // The following stats are provided by cAdvisor. // // GetCgroupStats returns the stats and the networking usage of the cgroup // with the specified cgroupName. GetCgroupStats(cgroupName string, updateStats bool) (*statsapi.ContainerStats, *statsapi.NetworkStats, error) // GetCgroupCPUAndMemoryStats returns the CPU and memory stats of the cgroup with the specified cgroupName. GetCgroupCPUAndMemoryStats(cgroupName string, updateStats bool) (*statsapi.ContainerStats, error) // RootFsStats returns the stats of the node root filesystem. RootFsStats() (*statsapi.FsStats, error) // The following stats are provided by cAdvisor for legacy usage. // // GetContainerInfo returns the information of the container with the // containerName managed by the pod with the uid. GetContainerInfo(ctx context.Context, podFullName string, uid types.UID, containerName string, req *cadvisorapi.ContainerInfoRequest) (*cadvisorapi.ContainerInfo, error) // GetRawContainerInfo returns the information of the container with the // containerName. If subcontainers is true, this function will return the // information of all the sub-containers as well. GetRawContainerInfo(containerName string, req *cadvisorapi.ContainerInfoRequest, subcontainers bool) (map[string]*cadvisorapi.ContainerInfo, error) // GetRequestedContainersInfo returns the information of the container with // the containerName, and with the specified cAdvisor options. GetRequestedContainersInfo(containerName string, options cadvisorv2.RequestOptions) (map[string]*cadvisorapi.ContainerInfo, error) // The following information is provided by Kubelet. // // GetPodByName returns the spec of the pod with the name in the specified // namespace. GetPodByName(namespace, name string) (*v1.Pod, bool) // GetNode returns the spec of the local node. GetNode() (*v1.Node, error) // GetNodeConfig returns the configuration of the local node. GetNodeConfig() cm.NodeConfig // ListVolumesForPod returns the stats of the volume used by the pod with // the podUID. ListVolumesForPod(podUID types.UID) (map[string]volume.Volume, bool) // ListBlockVolumesForPod returns the stats of the volume used by the // pod with the podUID. ListBlockVolumesForPod(podUID types.UID) (map[string]volume.BlockVolume, bool) // GetPods returns the specs of all the pods running on this node. GetPods() []*v1.Pod // RlimitStats returns the rlimit stats of system. RlimitStats() (*statsapi.RlimitStats, error) // GetPodCgroupRoot returns the literal cgroupfs value for the cgroup containing all pods GetPodCgroupRoot() string // GetPodByCgroupfs provides the pod that maps to the specified cgroup literal, as well // as whether the pod was found. GetPodByCgroupfs(cgroupfs string) (*v1.Pod, bool) }
Provider hosts methods required by stats handlers.
type ResourceAnalyzer ¶
type ResourceAnalyzer interface { Start() SummaryProvider // contains filtered or unexported methods }
ResourceAnalyzer provides statistics on node resource consumption
func NewResourceAnalyzer ¶
func NewResourceAnalyzer(statsProvider Provider, calVolumeFrequency time.Duration, eventRecorder record.EventRecorder) ResourceAnalyzer
NewResourceAnalyzer returns a new ResourceAnalyzer
type SummaryProvider ¶
type SummaryProvider interface { // Get provides a new Summary with the stats from Kubelet, // and will update some stats if updateStats is true Get(ctx context.Context, updateStats bool) (*statsapi.Summary, error) // GetCPUAndMemoryStats provides a new Summary with the CPU and memory stats from Kubelet, GetCPUAndMemoryStats(ctx context.Context) (*statsapi.Summary, error) }
SummaryProvider provides summaries of the stats from Kubelet.
func NewSummaryProvider ¶
func NewSummaryProvider(statsProvider Provider) SummaryProvider
NewSummaryProvider returns a SummaryProvider using the stats provided by the specified statsProvider.