Documentation
¶
Index ¶
- Constants
- type ContainerControlledValues
- type ContainerResourcePolicy
- type ContainerScalingMode
- type HistogramCheckpoint
- type Module
- type PodResourcePolicy
- type PodUpdatePolicy
- type RecommendedContainerResources
- type RecommendedPodResources
- type UpdateMode
- type VerticalPodAutoscaler
- type VerticalPodAutoscalerCheckpoint
- type VerticalPodAutoscalerCheckpointList
- type VerticalPodAutoscalerCheckpointSpec
- type VerticalPodAutoscalerCheckpointStatus
- type VerticalPodAutoscalerCondition
- type VerticalPodAutoscalerConditionType
- type VerticalPodAutoscalerList
- type VerticalPodAutoscalerSpec
- type VerticalPodAutoscalerStatus
Constants ¶
const ( // DefaultContainerResourcePolicy can be passed as // ContainerResourcePolicy.ContainerName to specify the default policy. DefaultContainerResourcePolicy = "*" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ContainerControlledValues ¶ added in v1.36.0
type ContainerControlledValues string
ContainerControlledValues controls which resource value should be autoscaled. +kubebuilder:validation:Enum=RequestsAndLimits;RequestsOnly
const ( // ContainerControlledValuesRequestsAndLimits means resource request and limits // are scaled automatically. The limit is scaled proportionally to the request. ContainerControlledValuesRequestsAndLimits ContainerControlledValues = "RequestsAndLimits" // ContainerControlledValuesRequestsOnly means only requested resource is autoscaled. ContainerControlledValuesRequestsOnly ContainerControlledValues = "RequestsOnly" )
type ContainerResourcePolicy ¶ added in v1.36.0
type ContainerResourcePolicy struct {
// Name of the container or DefaultContainerResourcePolicy, in which
// case the policy is used by the containers that don't have their own
// policy specified.
ContainerName string `json:"containerName,omitempty" protobuf:"bytes,1,opt,name=containerName"`
// Whether autoscaler is enabled for the container. The default is "Auto".
// +optional
Mode *ContainerScalingMode `json:"mode,omitempty" protobuf:"bytes,2,opt,name=mode"`
// Specifies the minimal amount of resources that will be recommended
// for the container. The default is no minimum.
// +optional
MinAllowed v1.ResourceList `json:"minAllowed,omitempty" protobuf:"bytes,3,rep,name=minAllowed,casttype=ResourceList,castkey=ResourceName"`
// Specifies the maximum amount of resources that will be recommended
// for the container. The default is no maximum.
// +optional
MaxAllowed v1.ResourceList `json:"maxAllowed,omitempty" protobuf:"bytes,4,rep,name=maxAllowed,casttype=ResourceList,castkey=ResourceName"`
// Specifies the type of recommendations that will be computed
// (and possibly applied) by VPA.
// If not specified, the default of [ResourceCPU, ResourceMemory] will be used.
ControlledResources *[]v1.ResourceName `json:"controlledResources,omitempty" patchStrategy:"merge" protobuf:"bytes,5,rep,name=controlledResources"`
// Specifies which resource values should be controlled.
// The default is "RequestsAndLimits".
// +optional
ControlledValues *ContainerControlledValues `json:"controlledValues,omitempty" protobuf:"bytes,6,rep,name=controlledValues"`
}
ContainerResourcePolicy controls how autoscaler computes the recommended resources for a specific container.
type ContainerScalingMode ¶ added in v1.36.0
type ContainerScalingMode string
ContainerScalingMode controls whether autoscaler is enabled for a specific container. +kubebuilder:validation:Enum=Auto;Off
const ( // ContainerScalingModeAuto means autoscaling is enabled for a container. ContainerScalingModeAuto ContainerScalingMode = "Auto" // ContainerScalingModeOff means autoscaling is disabled for a container. ContainerScalingModeOff ContainerScalingMode = "Off" )
type HistogramCheckpoint ¶ added in v1.36.0
type HistogramCheckpoint struct {
// Reference timestamp for samples collected within this histogram.
// +nullable
ReferenceTimestamp metav1.Time `json:"referenceTimestamp,omitempty" protobuf:"bytes,1,opt,name=referenceTimestamp"`
// Map from bucket index to bucket weight.
// +kubebuilder:validation:Type=object
// +kubebuilder:validation:XPreserveUnknownFields
BucketWeights map[int]uint32 `json:"bucketWeights,omitempty" protobuf:"bytes,2,opt,name=bucketWeights"`
// Sum of samples to be used as denominator for weights from BucketWeights.
TotalWeight float64 `json:"totalWeight,omitempty" protobuf:"bytes,3,opt,name=totalWeight"`
}
HistogramCheckpoint contains data needed to reconstruct the histogram.
type PodResourcePolicy ¶ added in v1.36.0
type PodResourcePolicy struct {
// Per-container resource policies.
// +optional
// +patchMergeKey=containerName
// +patchStrategy=merge
ContainerPolicies []ContainerResourcePolicy `` /* 132-byte string literal not displayed */
}
PodResourcePolicy controls how autoscaler computes the recommended resources for containers belonging to the pod. There can be at most one entry for every named container and optionally a single wildcard entry with `containerName` = '*', which handles all containers that don't have individual policies.
type PodUpdatePolicy ¶ added in v1.36.0
type PodUpdatePolicy struct {
// Controls when autoscaler applies changes to the pod resources.
// The default is 'Auto'.
// +optional
UpdateMode *UpdateMode `json:"updateMode,omitempty" protobuf:"bytes,1,opt,name=updateMode"`
}
PodUpdatePolicy describes the rules on how changes are applied to the pods.
type RecommendedContainerResources ¶ added in v1.36.0
type RecommendedContainerResources struct {
// Name of the container.
ContainerName string `json:"containerName,omitempty" protobuf:"bytes,1,opt,name=containerName"`
// Recommended amount of resources. Observes ContainerResourcePolicy.
Target v1.ResourceList `json:"target" protobuf:"bytes,2,rep,name=target,casttype=ResourceList,castkey=ResourceName"`
// Minimum recommended amount of resources. Observes ContainerResourcePolicy.
// This amount is not guaranteed to be sufficient for the application to operate in a stable way, however
// running with less resources is likely to have significant impact on performance/availability.
// +optional
LowerBound v1.ResourceList `json:"lowerBound,omitempty" protobuf:"bytes,3,rep,name=lowerBound,casttype=ResourceList,castkey=ResourceName"`
// Maximum recommended amount of resources. Observes ContainerResourcePolicy.
// Any resources allocated beyond this value are likely wasted. This value may be larger than the maximum
// amount of application is actually capable of consuming.
// +optional
UpperBound v1.ResourceList `json:"upperBound,omitempty" protobuf:"bytes,4,rep,name=upperBound,casttype=ResourceList,castkey=ResourceName"`
// The most recent recommended resources target computed by the autoscaler
// for the controlled pods, based only on actual resource usage, not taking
// into account the ContainerResourcePolicy.
// May differ from the Recommendation if the actual resource usage causes
// the target to violate the ContainerResourcePolicy (lower than MinAllowed
// or higher that MaxAllowed).
// Used only as status indication, will not affect actual resource assignment.
// +optional
UncappedTarget v1.ResourceList `json:"uncappedTarget,omitempty" protobuf:"bytes,5,opt,name=uncappedTarget"`
}
RecommendedContainerResources is the recommendation of resources computed by autoscaler for a specific container. Respects the container resource policy if present in the spec. In particular the recommendation is not produced for containers with `ContainerScalingMode` set to 'Off'.
type RecommendedPodResources ¶ added in v1.36.0
type RecommendedPodResources struct {
// Resources recommended by the autoscaler for each container.
// +optional
ContainerRecommendations []RecommendedContainerResources `json:"containerRecommendations,omitempty" protobuf:"bytes,1,rep,name=containerRecommendations"`
}
RecommendedPodResources is the recommendation of resources computed by autoscaler. It contains a recommendation for each container in the pod (except for those with `ContainerScalingMode` set to 'Off').
type UpdateMode ¶ added in v1.36.0
type UpdateMode string
UpdateMode controls when autoscaler applies changes to the pod resoures. +kubebuilder:validation:Enum=Off;Initial;Recreate;Auto
const ( // UpdateModeOff means that autoscaler never changes Pod resources. // The recommender still sets the recommended resources in the // VerticalPodAutoscaler object. This can be used for a "dry run". UpdateModeOff UpdateMode = "Off" // UpdateModeInitial means that autoscaler only assigns resources on pod // creation and does not change them during the lifetime of the pod. UpdateModeInitial UpdateMode = "Initial" // UpdateModeRecreate means that autoscaler assigns resources on pod // creation and additionally can update them during the lifetime of the // pod by deleting and recreating the pod. UpdateModeRecreate UpdateMode = "Recreate" // UpdateModeAuto means that autoscaler assigns resources on pod creation // and additionally can update them during the lifetime of the pod, // using any available update method. Currently this is equivalent to // Recreate, which is the only available update method. UpdateModeAuto UpdateMode = "Auto" )
type VerticalPodAutoscaler ¶ added in v1.36.0
type VerticalPodAutoscaler struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
// Specification of the behavior of the autoscaler.
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.
Spec VerticalPodAutoscalerSpec `json:"spec" protobuf:"bytes,2,name=spec"`
// Current information about the autoscaler.
// +optional
Status VerticalPodAutoscalerStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
}
VerticalPodAutoscaler is the configuration for a vertical pod autoscaler, which automatically manages pod resources based on historical and real time resource utilization.
type VerticalPodAutoscalerCheckpoint ¶ added in v1.36.0
type VerticalPodAutoscalerCheckpoint struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
// Specification of the checkpoint.
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.
// +optional
Spec VerticalPodAutoscalerCheckpointSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
// Data of the checkpoint.
// +optional
Status VerticalPodAutoscalerCheckpointStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
}
VerticalPodAutoscalerCheckpoint is the checkpoint of the internal state of VPA that is used for recovery after recommender's restart.
type VerticalPodAutoscalerCheckpointList ¶ added in v1.36.0
type VerticalPodAutoscalerCheckpointList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata"`
Items []VerticalPodAutoscalerCheckpoint `json:"items"`
}
VerticalPodAutoscalerCheckpointList is a list of VerticalPodAutoscalerCheckpoint objects.
type VerticalPodAutoscalerCheckpointSpec ¶ added in v1.36.0
type VerticalPodAutoscalerCheckpointSpec struct {
// Name of the VPA object that stored VerticalPodAutoscalerCheckpoint object.
VPAObjectName string `json:"vpaObjectName,omitempty" protobuf:"bytes,1,opt,name=vpaObjectName"`
// Name of the checkpointed container.
ContainerName string `json:"containerName,omitempty" protobuf:"bytes,2,opt,name=containerName"`
}
VerticalPodAutoscalerCheckpointSpec is the specification of the checkpoint object.
type VerticalPodAutoscalerCheckpointStatus ¶ added in v1.36.0
type VerticalPodAutoscalerCheckpointStatus struct {
// The time when the status was last refreshed.
// +nullable
LastUpdateTime metav1.Time `json:"lastUpdateTime,omitempty" protobuf:"bytes,1,opt,name=lastUpdateTime"`
// Version of the format of the stored data.
Version string `json:"version,omitempty" protobuf:"bytes,2,opt,name=version"`
// Checkpoint of histogram for consumption of CPU.
CPUHistogram HistogramCheckpoint `json:"cpuHistogram,omitempty" protobuf:"bytes,3,rep,name=cpuHistograms"`
// Checkpoint of histogram for consumption of memory.
MemoryHistogram HistogramCheckpoint `json:"memoryHistogram,omitempty" protobuf:"bytes,4,rep,name=memoryHistogram"`
// Timestamp of the fist sample from the histograms.
// +nullable
FirstSampleStart metav1.Time `json:"firstSampleStart,omitempty" protobuf:"bytes,5,opt,name=firstSampleStart"`
// Timestamp of the last sample from the histograms.
// +nullable
LastSampleStart metav1.Time `json:"lastSampleStart,omitempty" protobuf:"bytes,6,opt,name=lastSampleStart"`
// Total number of samples in the histograms.
TotalSamplesCount int `json:"totalSamplesCount,omitempty" protobuf:"bytes,7,opt,name=totalSamplesCount"`
}
VerticalPodAutoscalerCheckpointStatus contains data of the checkpoint.
type VerticalPodAutoscalerCondition ¶ added in v1.36.0
type VerticalPodAutoscalerCondition struct {
// type describes the current condition
Type VerticalPodAutoscalerConditionType `json:"type" protobuf:"bytes,1,name=type"`
// status is the status of the condition (True, False, Unknown)
Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,name=status"`
// lastTransitionTime is the last time the condition transitioned from
// one status to another
// +optional
LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,3,opt,name=lastTransitionTime"`
// reason is the reason for the condition's last transition.
// +optional
Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"`
// message is a human-readable explanation containing details about
// the transition
// +optional
Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"`
}
VerticalPodAutoscalerCondition describes the state of a VerticalPodAutoscaler at a certain point.
type VerticalPodAutoscalerConditionType ¶ added in v1.36.0
type VerticalPodAutoscalerConditionType string
VerticalPodAutoscalerConditionType are the valid conditions of a VerticalPodAutoscaler.
var ( // RecommendationProvided indicates whether the VPA recommender was able to calculate a recommendation. RecommendationProvided VerticalPodAutoscalerConditionType = "RecommendationProvided" // LowConfidence indicates whether the VPA recommender has low confidence in the recommendation for // some of containers. LowConfidence VerticalPodAutoscalerConditionType = "LowConfidence" // NoPodsMatched indicates that label selector used with VPA object didn't match any pods. NoPodsMatched VerticalPodAutoscalerConditionType = "NoPodsMatched" // FetchingHistory indicates that VPA recommender is in the process of loading additional history samples. FetchingHistory VerticalPodAutoscalerConditionType = "FetchingHistory" // ConfigDeprecated indicates that this VPA configuration is deprecated // and will stop being supported soon. ConfigDeprecated VerticalPodAutoscalerConditionType = "ConfigDeprecated" // ConfigUnsupported indicates that this VPA configuration is unsupported // and recommendations will not be provided for it. ConfigUnsupported VerticalPodAutoscalerConditionType = "ConfigUnsupported" )
type VerticalPodAutoscalerList ¶ added in v1.36.0
type VerticalPodAutoscalerList struct {
metav1.TypeMeta `json:",inline"`
// metadata is the standard list metadata.
// +optional
metav1.ListMeta `json:"metadata" protobuf:"bytes,1,opt,name=metadata"`
// items is the list of vertical pod autoscaler objects.
Items []VerticalPodAutoscaler `json:"items" protobuf:"bytes,2,rep,name=items"`
}
VerticalPodAutoscalerList is a list of VerticalPodAutoscaler objects.
type VerticalPodAutoscalerSpec ¶ added in v1.36.0
type VerticalPodAutoscalerSpec struct {
// TargetRef points to the controller managing the set of pods for the
// autoscaler to control - e.g. Deployment, StatefulSet. VerticalPodAutoscaler
// can be targeted at controller implementing scale subresource (the pod set is
// retrieved from the controller's ScaleStatus) or some well known controllers
// (e.g. for DaemonSet the pod set is read from the controller's spec).
// If VerticalPodAutoscaler cannot use specified target it will report
// ConfigUnsupported condition.
// Note that VerticalPodAutoscaler does not require full implementation
// of scale subresource - it will not use it to modify the replica count.
// The only thing retrieved is a label selector matching pods grouped by
// the target resource.
TargetRef *autoscaling.CrossVersionObjectReference `json:"targetRef" protobuf:"bytes,1,name=targetRef"`
// Describes the rules on how changes are applied to the pods.
// If not specified, all fields in the `PodUpdatePolicy` are set to their
// default values.
// +optional
UpdatePolicy *PodUpdatePolicy `json:"updatePolicy,omitempty" protobuf:"bytes,2,opt,name=updatePolicy"`
// Controls how the autoscaler computes recommended resources.
// The resource policy may be used to set constraints on the recommendations
// for individual containers. If not specified, the autoscaler computes recommended
// resources for all containers in the pod, without additional constraints.
// +optional
ResourcePolicy *PodResourcePolicy `json:"resourcePolicy,omitempty" protobuf:"bytes,3,opt,name=resourcePolicy"`
}
VerticalPodAutoscalerSpec is the specification of the behavior of the autoscaler.
type VerticalPodAutoscalerStatus ¶ added in v1.36.0
type VerticalPodAutoscalerStatus struct {
// The most recently computed amount of resources recommended by the
// autoscaler for the controlled pods.
// +optional
Recommendation *RecommendedPodResources `json:"recommendation,omitempty" protobuf:"bytes,1,opt,name=recommendation"`
// Conditions is the set of conditions required for this autoscaler to scale its target,
// and indicates whether or not those conditions are met.
// +optional
// +patchMergeKey=type
// +patchStrategy=merge
Conditions []VerticalPodAutoscalerCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,2,rep,name=conditions"`
}
VerticalPodAutoscalerStatus describes the runtime state of the autoscaler.