autoscaling

package
v0.0.0-...-4c37ff3 Latest Latest
Warning

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

Go to latest
Published: Nov 20, 2024 License: Apache-2.0 Imports: 58 Imported by: 0

Documentation

Index

Constants

View Source
const (

	// VpaEvictionTimeout is a timeout for VPA to restart a pod if there are no
	// mechanisms blocking it (for example PDB).
	VpaEvictionTimeout = 3 * time.Minute
)

Variables

View Source
var (
	// KindRC is the GVK for ReplicationController
	KindRC = schema.GroupVersionKind{Version: "v1", Kind: "ReplicationController"}
	// KindDeployment is the GVK for Deployment
	KindDeployment = schema.GroupVersionKind{Group: "apps", Version: "v1beta2", Kind: "Deployment"}
	// KindReplicaSet is the GVK for ReplicaSet
	KindReplicaSet = schema.GroupVersionKind{Group: "apps", Version: "v1beta2", Kind: "ReplicaSet"}
)

Functions

func ActuationSuiteE2eDescribe

func ActuationSuiteE2eDescribe(name string, body func()) bool

ActuationSuiteE2eDescribe describes a VPA actuation e2e test.

func AdmissionControllerE2eDescribe

func AdmissionControllerE2eDescribe(name string, body func()) bool

AdmissionControllerE2eDescribe describes a VPA admission controller e2e test.

func AfterSuiteActions

func AfterSuiteActions()

AfterSuiteActions are actions that are run on ginkgo's SynchronizedAfterSuite

func AnnotatePod

func AnnotatePod(f *framework.Framework, podName, annotationName, annotationValue string)

AnnotatePod adds annotation for an existing pod.

func CheckNoPodsEvicted

func CheckNoPodsEvicted(f *framework.Framework, initialPodSet PodSet)

CheckNoPodsEvicted waits for long enough period for VPA to start evicting pods and checks that no pods were restarted.

func CleanupSuite

func CleanupSuite()

CleanupSuite is the boilerplate that can be used after tests on ginkgo were run, on the SynchronizedAfterSuite step. Similar to SynchronizedBeforeSuite, we want to run some operations only once (such as collecting cluster logs). Here, the order of functions is reversed; first, the function which runs everywhere, and then the function that only runs on the first Ginkgo node.

func E2eDescribe

func E2eDescribe(scenario, name string, body func()) bool

E2eDescribe describes a VPA e2e test.

func FullVpaE2eDescribe

func FullVpaE2eDescribe(name string, body func()) bool

FullVpaE2eDescribe describes a VPA full stack e2e test.

func GetEvictedPodsCount

func GetEvictedPodsCount(currentPodSet PodSet, initialPodSet PodSet) int

GetEvictedPodsCount returns the count of pods from initialPodSet that have been evicted comparing to currentPodSet.

func GetHamsterContainerNameByIndex

func GetHamsterContainerNameByIndex(i int) string

GetHamsterContainerNameByIndex returns name of i-th hamster container.

func GetHamsterPods

func GetHamsterPods(f *framework.Framework) (*apiv1.PodList, error)

GetHamsterPods returns running hamster pods (matched by hamsterLabels)

func InstallLimitRangeWithMax

func InstallLimitRangeWithMax(f *framework.Framework, maxCpuLimit, maxMemoryLimit string, lrType apiv1.LimitType)

InstallLimitRangeWithMax installs a LimitRange with a maximum limit for CPU and memory.

func InstallLimitRangeWithMin

func InstallLimitRangeWithMin(f *framework.Framework, minCpuLimit, minMemoryLimit string, lrType apiv1.LimitType)

InstallLimitRangeWithMin installs a LimitRange with a minimum limit for CPU and memory.

func InstallRawVPA

func InstallRawVPA(f *framework.Framework, obj interface{}) error

InstallRawVPA installs a VPA object passed in as raw json in the test cluster.

func InstallVPA

InstallVPA installs a VPA object in the test cluster.

func NewHamsterDeployment

func NewHamsterDeployment(f *framework.Framework) *appsv1.Deployment

NewHamsterDeployment creates a simple hamster deployment for e2e test purposes.

func NewHamsterDeploymentWithGuaranteedResources

func NewHamsterDeploymentWithGuaranteedResources(f *framework.Framework, cpuQuantity, memoryQuantity resource.Quantity) *appsv1.Deployment

NewHamsterDeploymentWithGuaranteedResources creates a simple hamster deployment with specific resource requests for e2e test purposes. Since the container in the pod specifies resource limits but not resource requests K8s will set requests equal to limits and the pod will have guaranteed QoS class.

func NewHamsterDeploymentWithResources

func NewHamsterDeploymentWithResources(f *framework.Framework, cpuQuantity, memoryQuantity resource.Quantity) *appsv1.Deployment

NewHamsterDeploymentWithResources creates a simple hamster deployment with specific resource requests for e2e test purposes.

func NewHamsterDeploymentWithResourcesAndLimits

func NewHamsterDeploymentWithResourcesAndLimits(f *framework.Framework, cpuQuantityRequest, memoryQuantityRequest, cpuQuantityLimit, memoryQuantityLimit resource.Quantity) *appsv1.Deployment

NewHamsterDeploymentWithResourcesAndLimits creates a simple hamster deployment with specific resource requests and limits for e2e test purposes.

func NewNHamstersDeployment

func NewNHamstersDeployment(f *framework.Framework, n int) *appsv1.Deployment

NewNHamstersDeployment creates a simple hamster deployment with n containers for e2e test purposes.

func NewTestCronJob

func NewTestCronJob(name, schedule string) *batchv1.CronJob

NewTestCronJob returns a CronJob for test purposes.

func NewVPA

NewVPA creates a VPA object for e2e test purposes.

func ParseQuantityOrDie

func ParseQuantityOrDie(text string) resource.Quantity

ParseQuantityOrDie parses quantity from string and dies with an error if unparsable.

func PatchVpaRecommendation

func PatchVpaRecommendation(f *framework.Framework, vpa *vpa_types.VerticalPodAutoscaler,
	recommendation *vpa_types.RecommendedPodResources)

PatchVpaRecommendation installs a new reocmmendation for VPA object.

func RecommenderE2eDescribe

func RecommenderE2eDescribe(name string, body func()) bool

RecommenderE2eDescribe describes a VPA recommender e2e test.

func RunE2ETests

func RunE2ETests(t *testing.T)

RunE2ETests checks configuration parameters (specified through flags) and then runs E2E tests using the Ginkgo runner. If a "report directory" is specified, one or more JUnit test reports will be generated in this directory, and cluster logs will also be saved. This function is called on each Ginkgo node in parallel mode.

func SIGDescribe

func SIGDescribe(text string, body func()) bool

SIGDescribe adds sig-autoscaling tag to test description.

func SetupHamsterContainer

func SetupHamsterContainer(cpu, memory string) apiv1.Container

SetupHamsterContainer returns container with given amount of cpu and memory

func SetupHamsterCronJob

func SetupHamsterCronJob(f *framework.Framework, schedule, cpu, memory string, replicas int32)

SetupHamsterCronJob creates and sets up a new CronJob

func SetupHamsterDeployment

func SetupHamsterDeployment(f *framework.Framework, cpu, memory string, replicas int32) *appsv1.Deployment

SetupHamsterDeployment creates and installs a simple hamster deployment for e2e test purposes, then makes sure the deployment is running.

func SetupVPA

SetupVPA creates and installs a simple hamster VPA for e2e test purposes.

func SetupVPAForNHamsters

func SetupVPAForNHamsters(f *framework.Framework, n int, cpu string, mode vpa_types.UpdateMode, targetRef *autoscaling.CrossVersionObjectReference)

SetupVPAForNHamsters creates and installs a simple pod with n hamster containers for e2e test purposes.

func UpdaterE2eDescribe

func UpdaterE2eDescribe(name string, body func()) bool

UpdaterE2eDescribe describes a VPA updater e2e test.

func WaitForPodsEvicted

func WaitForPodsEvicted(f *framework.Framework, podList *apiv1.PodList) error

WaitForPodsEvicted waits until some pods from the list are evicted.

func WaitForPodsRestarted

func WaitForPodsRestarted(f *framework.Framework, podList *apiv1.PodList) error

WaitForPodsRestarted waits until some pods from the list are restarted.

func WaitForRecommendationPresent

WaitForRecommendationPresent pools VPA object until recommendations are not empty. Returns polled vpa object. On timeout returns error.

func WaitForUncappedCPURecommendationAbove

func WaitForUncappedCPURecommendationAbove(c vpa_clientset.Interface, vpa *vpa_types.VerticalPodAutoscaler, minMilliCPU int64) (*vpa_types.VerticalPodAutoscaler, error)

WaitForUncappedCPURecommendationAbove pools VPA object until uncapped recommendation is above specified value. Returns polled VPA object. On timeout returns error.

func WaitForVPAMatch

WaitForVPAMatch pools VPA object until match function returns true. Returns polled vpa object. On timeout returns error.

func WerePodsSuccessfullyRestarted

func WerePodsSuccessfullyRestarted(currentPodSet PodSet, initialPodSet PodSet) bool

WerePodsSuccessfullyRestarted returns true if some pods from initialPodSet have been successfully restarted comparing to currentPodSet (pods were evicted and are running).

Types

type PodSet

type PodSet map[string]types.UID

PodSet is a simplified representation of PodList mapping names to UIDs.

func MakePodSet

func MakePodSet(pods *apiv1.PodList) PodSet

MakePodSet converts PodList to podset for easier comparison of pod collections.

type ResourceConsumer

type ResourceConsumer struct {
	// contains filtered or unexported fields
}

ResourceConsumer is a tool for testing. It helps create specified usage of CPU or memory (Warning: memory not supported) typical use case: rc.ConsumeCPU(600) // ... check your assumption here rc.ConsumeCPU(300) // ... check your assumption here

func NewDynamicResourceConsumer

func NewDynamicResourceConsumer(name, nsName string, kind schema.GroupVersionKind, replicas, initCPUTotal, initMemoryTotal, initCustomMetric int, cpuLimit, memLimit int64, clientset clientset.Interface, scaleClient scaleclient.ScalesGetter) *ResourceConsumer

NewDynamicResourceConsumer is a wrapper to create a new dynamic ResourceConsumer

func (*ResourceConsumer) CleanUp

func (rc *ResourceConsumer) CleanUp()

CleanUp clean up the background goroutines responsible for consuming resources.

func (*ResourceConsumer) ConsumeCPU

func (rc *ResourceConsumer) ConsumeCPU(millicores int)

ConsumeCPU consumes given number of CPU

func (*ResourceConsumer) ConsumeCustomMetric

func (rc *ResourceConsumer) ConsumeCustomMetric(amount int)

ConsumeCustomMetric consumes given number of custom metric

func (*ResourceConsumer) ConsumeMem

func (rc *ResourceConsumer) ConsumeMem(megabytes int)

ConsumeMem consumes given number of Mem

Jump to

Keyboard shortcuts

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