v1alpha1

package
v0.32.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 11, 2024 License: Apache-2.0 Imports: 1 Imported by: 54

Documentation

Index

Constants

View Source
const (
	// SystemContainerKubelet is the container name for the system container tracking Kubelet usage.
	SystemContainerKubelet = "kubelet"
	// SystemContainerRuntime is the container name for the system container tracking the runtime (e.g. docker) usage.
	SystemContainerRuntime = "runtime"
	// SystemContainerMisc is the container name for the system container tracking non-kubernetes processes.
	SystemContainerMisc = "misc"
	// SystemContainerPods is the container name for the system container tracking user pods.
	SystemContainerPods = "pods"
	// SystemContainerWindowsGlobalCommitMemory (only used on Windows) is the container name for the system container
	// tracking global commit memory usage and is used for memory-pressure eviction.
	SystemContainerWindowsGlobalCommitMemory = "windows-global-commit-memory"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type AcceleratorStats

type AcceleratorStats struct {
	// Make of the accelerator (nvidia, amd, google etc.)
	Make string `json:"make"`

	// Model of the accelerator (tesla-p100, tesla-k80 etc.)
	Model string `json:"model"`

	// ID of the accelerator.
	ID string `json:"id"`

	// Total accelerator memory.
	// unit: bytes
	MemoryTotal uint64 `json:"memoryTotal"`

	// Total accelerator memory allocated.
	// unit: bytes
	MemoryUsed uint64 `json:"memoryUsed"`

	// Percent of time over the past sample period (10s) during which
	// the accelerator was actively processing.
	DutyCycle uint64 `json:"dutyCycle"`
}

AcceleratorStats contains stats for accelerators attached to the container.

type CPUStats

type CPUStats struct {
	// The time at which these stats were updated.
	Time metav1.Time `json:"time"`
	// Total CPU usage (sum of all cores) averaged over the sample window.
	// The "core" unit can be interpreted as CPU core-nanoseconds per second.
	// +optional
	UsageNanoCores *uint64 `json:"usageNanoCores,omitempty"`
	// Cumulative CPU usage (sum of all cores) since object creation.
	// +optional
	UsageCoreNanoSeconds *uint64 `json:"usageCoreNanoSeconds,omitempty"`
}

CPUStats contains data about CPU usage.

type ContainerStats

type ContainerStats struct {
	// Reference to the measured container.
	Name string `json:"name"`
	// The time at which data collection for this container was (re)started.
	StartTime metav1.Time `json:"startTime"`
	// Stats pertaining to CPU resources.
	// +optional
	CPU *CPUStats `json:"cpu,omitempty"`
	// Stats pertaining to memory (RAM) resources.
	// +optional
	Memory *MemoryStats `json:"memory,omitempty"`
	// Metrics for Accelerators. Each Accelerator corresponds to one element in the array.
	Accelerators []AcceleratorStats `json:"accelerators,omitempty"`
	// Stats pertaining to container rootfs usage of filesystem resources.
	// Rootfs.UsedBytes is the number of bytes used for the container write layer.
	// +optional
	Rootfs *FsStats `json:"rootfs,omitempty"`
	// Stats pertaining to container logs usage of filesystem resources.
	// Logs.UsedBytes is the number of bytes used for the container logs.
	// +optional
	Logs *FsStats `json:"logs,omitempty"`
	// User defined metrics that are exposed by containers in the pod. Typically, we expect only one container in the pod to be exposing user defined metrics. In the event of multiple containers exposing metrics, they will be combined here.
	// +patchMergeKey=name
	// +patchStrategy=merge
	UserDefinedMetrics []UserDefinedMetric `json:"userDefinedMetrics,omitempty" patchStrategy:"merge" patchMergeKey:"name"`
	// Stats pertaining to swap resources. This is reported to non-windows systems only.
	// +optional
	Swap *SwapStats `json:"swap,omitempty"`
}

ContainerStats holds container-level unprocessed sample stats.

type FsStats

type FsStats struct {
	// The time at which these stats were updated.
	Time metav1.Time `json:"time"`
	// AvailableBytes represents the storage space available (bytes) for the filesystem.
	// +optional
	AvailableBytes *uint64 `json:"availableBytes,omitempty"`
	// CapacityBytes represents the total capacity (bytes) of the filesystems underlying storage.
	// +optional
	CapacityBytes *uint64 `json:"capacityBytes,omitempty"`
	// UsedBytes represents the bytes used for a specific task on the filesystem.
	// This may differ from the total bytes used on the filesystem and may not equal CapacityBytes - AvailableBytes.
	// e.g. For ContainerStats.Rootfs this is the bytes used by the container rootfs on the filesystem.
	// +optional
	UsedBytes *uint64 `json:"usedBytes,omitempty"`
	// InodesFree represents the free inodes in the filesystem.
	// +optional
	InodesFree *uint64 `json:"inodesFree,omitempty"`
	// Inodes represents the total inodes in the filesystem.
	// +optional
	Inodes *uint64 `json:"inodes,omitempty"`
	// InodesUsed represents the inodes used by the filesystem
	// This may not equal Inodes - InodesFree because this filesystem may share inodes with other "filesystems"
	// e.g. For ContainerStats.Rootfs, this is the inodes used only by that container, and does not count inodes used by other containers.
	InodesUsed *uint64 `json:"inodesUsed,omitempty"`
}

FsStats contains data about filesystem usage.

type InterfaceStats

type InterfaceStats struct {
	// The name of the interface
	Name string `json:"name"`
	// Cumulative count of bytes received.
	// +optional
	RxBytes *uint64 `json:"rxBytes,omitempty"`
	// Cumulative count of receive errors encountered.
	// +optional
	RxErrors *uint64 `json:"rxErrors,omitempty"`
	// Cumulative count of bytes transmitted.
	// +optional
	TxBytes *uint64 `json:"txBytes,omitempty"`
	// Cumulative count of transmit errors encountered.
	// +optional
	TxErrors *uint64 `json:"txErrors,omitempty"`
}

InterfaceStats contains resource value data about interface.

type MemoryStats

type MemoryStats struct {
	// The time at which these stats were updated.
	Time metav1.Time `json:"time"`
	// Available memory for use.  This is defined as the memory limit - workingSetBytes.
	// If memory limit is undefined, the available bytes is omitted.
	// +optional
	AvailableBytes *uint64 `json:"availableBytes,omitempty"`
	// Total memory in use. This includes all memory regardless of when it was accessed.
	// +optional
	UsageBytes *uint64 `json:"usageBytes,omitempty"`
	// The amount of working set memory. This includes recently accessed memory,
	// dirty memory, and kernel memory. WorkingSetBytes is <= UsageBytes
	// +optional
	WorkingSetBytes *uint64 `json:"workingSetBytes,omitempty"`
	// The amount of anonymous and swap cache memory (includes transparent
	// hugepages).
	// +optional
	RSSBytes *uint64 `json:"rssBytes,omitempty"`
	// Cumulative number of minor page faults.
	// +optional
	PageFaults *uint64 `json:"pageFaults,omitempty"`
	// Cumulative number of major page faults.
	// +optional
	MajorPageFaults *uint64 `json:"majorPageFaults,omitempty"`
}

MemoryStats contains data about memory usage.

type NetworkStats

type NetworkStats struct {
	// The time at which these stats were updated.
	Time metav1.Time `json:"time"`

	// Stats for the default interface, if found
	InterfaceStats `json:",inline"`

	Interfaces []InterfaceStats `json:"interfaces,omitempty"`
}

NetworkStats contains data about network resources.

type NodeStats

type NodeStats struct {
	// Reference to the measured Node.
	NodeName string `json:"nodeName"`
	// Stats of system daemons tracked as raw containers.
	// The system containers are named according to the SystemContainer* constants.
	// +optional
	// +patchMergeKey=name
	// +patchStrategy=merge
	SystemContainers []ContainerStats `json:"systemContainers,omitempty" patchStrategy:"merge" patchMergeKey:"name"`
	// The time at which data collection for the node-scoped (i.e. aggregate) stats was (re)started.
	StartTime metav1.Time `json:"startTime"`
	// Stats pertaining to CPU resources.
	// +optional
	CPU *CPUStats `json:"cpu,omitempty"`
	// Stats pertaining to memory (RAM) resources.
	// +optional
	Memory *MemoryStats `json:"memory,omitempty"`
	// Stats pertaining to network resources.
	// +optional
	Network *NetworkStats `json:"network,omitempty"`
	// Stats pertaining to total usage of filesystem resources on the rootfs used by node k8s components.
	// NodeFs.Used is the total bytes used on the filesystem.
	// +optional
	Fs *FsStats `json:"fs,omitempty"`
	// Stats about the underlying container runtime.
	// +optional
	Runtime *RuntimeStats `json:"runtime,omitempty"`
	// Stats about the rlimit of system.
	// +optional
	Rlimit *RlimitStats `json:"rlimit,omitempty"`
	// Stats pertaining to swap resources. This is reported to non-windows systems only.
	// +optional
	Swap *SwapStats `json:"swap,omitempty"`
}

NodeStats holds node-level unprocessed sample stats.

type PVCReference

type PVCReference struct {
	Name      string `json:"name"`
	Namespace string `json:"namespace"`
}

PVCReference contains enough information to describe the referenced PVC.

type PodReference

type PodReference struct {
	Name      string `json:"name"`
	Namespace string `json:"namespace"`
	UID       string `json:"uid"`
}

PodReference contains enough information to locate the referenced pod.

type PodStats

type PodStats struct {
	// Reference to the measured Pod.
	PodRef PodReference `json:"podRef"`
	// The time at which data collection for the pod-scoped (e.g. network) stats was (re)started.
	StartTime metav1.Time `json:"startTime"`
	// Stats of containers in the measured pod.
	// +patchMergeKey=name
	// +patchStrategy=merge
	Containers []ContainerStats `json:"containers" patchStrategy:"merge" patchMergeKey:"name"`
	// Stats pertaining to CPU resources consumed by pod cgroup (which includes all containers' resource usage and pod overhead).
	// +optional
	CPU *CPUStats `json:"cpu,omitempty"`
	// Stats pertaining to memory (RAM) resources consumed by pod cgroup (which includes all containers' resource usage and pod overhead).
	// +optional
	Memory *MemoryStats `json:"memory,omitempty"`
	// Stats pertaining to network resources.
	// +optional
	Network *NetworkStats `json:"network,omitempty"`
	// Stats pertaining to volume usage of filesystem resources.
	// VolumeStats.UsedBytes is the number of bytes used by the Volume
	// +optional
	// +patchMergeKey=name
	// +patchStrategy=merge
	VolumeStats []VolumeStats `json:"volume,omitempty" patchStrategy:"merge" patchMergeKey:"name"`
	// EphemeralStorage reports the total filesystem usage for the containers and emptyDir-backed volumes in the measured Pod.
	// +optional
	EphemeralStorage *FsStats `json:"ephemeral-storage,omitempty"`
	// ProcessStats pertaining to processes.
	// +optional
	ProcessStats *ProcessStats `json:"process_stats,omitempty"`
	// Stats pertaining to swap resources. This is reported to non-windows systems only.
	// +optional
	Swap *SwapStats `json:"swap,omitempty"`
}

PodStats holds pod-level unprocessed sample stats.

type ProcessStats

type ProcessStats struct {
	// Number of processes
	// +optional
	ProcessCount *uint64 `json:"process_count,omitempty"`
}

ProcessStats are stats pertaining to processes.

type RlimitStats

type RlimitStats struct {
	Time metav1.Time `json:"time"`

	// The max number of extant process (threads, precisely on Linux) of OS. See RLIMIT_NPROC in getrlimit(2).
	// The operating system ceiling on the number of process IDs that can be assigned.
	// On Linux, tasks (either processes or threads) consume 1 PID each.
	MaxPID *int64 `json:"maxpid,omitempty"`
	// The number of running process (threads, precisely on Linux) in the OS.
	NumOfRunningProcesses *int64 `json:"curproc,omitempty"`
}

RlimitStats are stats rlimit of OS.

type RuntimeStats

type RuntimeStats struct {
	// Stats about the underlying filesystem where container images are stored.
	// This filesystem could be the same as the primary (root) filesystem.
	// Usage here refers to the total number of bytes occupied by images on the filesystem.
	// +optional
	ImageFs *FsStats `json:"imageFs,omitempty"`
	// Stats about the underlying filesystem where container's writeable layer is stored.
	// This filesystem could be the same as the primary (root) filesystem or the ImageFS.
	// Usage here refers to the total number of bytes occupied by the writeable layer on the filesystem.
	// +optional
	ContainerFs *FsStats `json:"containerFs,omitempty"`
}

RuntimeStats are stats pertaining to the underlying container runtime.

type Summary

type Summary struct {
	// Overall node stats.
	Node NodeStats `json:"node"`
	// Per-pod stats.
	Pods []PodStats `json:"pods"`
}

Summary is a top-level container for holding NodeStats and PodStats.

type SwapStats added in v0.28.0

type SwapStats struct {
	// The time at which these stats were updated.
	Time metav1.Time `json:"time"`
	// Available swap memory for use.  This is defined as the <swap-limit> - <current-swap-usage>.
	// If swap limit is undefined, this value is omitted.
	// +optional
	SwapAvailableBytes *uint64 `json:"swapAvailableBytes,omitempty"`
	// Total swap memory in use.
	// +optional
	SwapUsageBytes *uint64 `json:"swapUsageBytes,omitempty"`
}

SwapStats contains data about memory usage

type UserDefinedMetric

type UserDefinedMetric struct {
	UserDefinedMetricDescriptor `json:",inline"`
	// The time at which these stats were updated.
	Time metav1.Time `json:"time"`
	// Value of the metric. Float64s have 53 bit precision.
	// We do not foresee any metrics exceeding that value.
	Value float64 `json:"value"`
}

UserDefinedMetric represents a metric defined and generated by users.

type UserDefinedMetricDescriptor

type UserDefinedMetricDescriptor struct {
	// The name of the metric.
	Name string `json:"name"`

	// Type of the metric.
	Type UserDefinedMetricType `json:"type"`

	// Display Units for the stats.
	Units string `json:"units"`

	// Metadata labels associated with this metric.
	// +optional
	Labels map[string]string `json:"labels,omitempty"`
}

UserDefinedMetricDescriptor contains metadata that describes a user defined metric.

type UserDefinedMetricType

type UserDefinedMetricType string

UserDefinedMetricType defines how the metric should be interpreted by the user.

const (
	// MetricGauge is an instantaneous value. May increase or decrease.
	MetricGauge UserDefinedMetricType = "gauge"

	// MetricCumulative is a counter-like value that is only expected to increase.
	MetricCumulative UserDefinedMetricType = "cumulative"

	// MetricDelta is a rate over a time period.
	MetricDelta UserDefinedMetricType = "delta"
)

type VolumeHealthStats added in v0.24.0

type VolumeHealthStats struct {
	// Normal volumes are available for use and operating optimally.
	// An abnormal volume does not meet these criteria.
	Abnormal bool `json:"abnormal"`
}

VolumeHealthStats contains data about volume health.

type VolumeStats

type VolumeStats struct {
	// Embedded FsStats
	FsStats `json:",inline"`
	// Name is the name given to the Volume
	// +optional
	Name string `json:"name,omitempty"`
	// Reference to the PVC, if one exists
	// +optional
	PVCRef *PVCReference `json:"pvcRef,omitempty"`

	// VolumeHealthStats contains data about volume health
	// +optional
	VolumeHealthStats *VolumeHealthStats `json:"volumeHealthStats,omitempty"`
}

VolumeStats contains data about Volume filesystem usage.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL