autoscaling

package
v0.0.0-...-e87aea4 Latest Latest
Warning

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

Go to latest
Published: Sep 5, 2019 License: Apache-2.0 Imports: 45 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 var
	KindRC = schema.GroupVersionKind{Version: "v1", Kind: "ReplicationController"}
	// KindDeployment var
	KindDeployment = schema.GroupVersionKind{Group: "apps", Version: "v1beta2", Kind: "Deployment"}
	// KindReplicaSet var
	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 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 CreateCPUHorizontalPodAutoscaler

func CreateCPUHorizontalPodAutoscaler(rc *ResourceConsumer, cpu, minReplicas, maxRepl int32) *autoscalingv1.HorizontalPodAutoscaler

CreateCPUHorizontalPodAutoscaler func

func DeleteHorizontalPodAutoscaler

func DeleteHorizontalPodAutoscaler(rc *ResourceConsumer, autoscalerName string)

DeleteHorizontalPodAutoscaler func

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 GetHamsterPods

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

GetHamsterPods returns running hamster pods (matched by hamsterLabels)

func GetResourceConsumerImage

func GetResourceConsumerImage() string

GetResourceConsumerImage func

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 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 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 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

func SetupVPA(f *framework.Framework, cpu string, mode vpa_types.UpdateMode)

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

func SetupVPAForTwoHamsters

func SetupVPAForTwoHamsters(f *framework.Framework, cpu string, mode vpa_types.UpdateMode)

SetupVPAForTwoHamsters creates and installs a simple pod with two hamster containers for e2e test purposes.

func UpdaterE2eDescribe

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

UpdaterE2eDescribe describes a VPA updater e2e test.

func WaitForConditionPresent

func WaitForConditionPresent(c *vpa_clientset.Clientset, vpa *vpa_types.VerticalPodAutoscaler, expectedConditionType string) (*vpa_types.VerticalPodAutoscaler, error)

WaitForConditionPresent pools VPA object until it contains condition with given type. On timeout returns an error.

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 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 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, cpuRequest, memRequest resource.Quantity, clientset clientset.Interface, internalClientset *internalclientset.Clientset) *ResourceConsumer

NewDynamicResourceConsumer func

func NewStaticResourceConsumer

func NewStaticResourceConsumer(name, nsName string, replicas, initCPUTotal, initMemoryTotal, initCustomMetric int, cpuRequest, memRequest resource.Quantity, clientset clientset.Interface, internalClientset *internalclientset.Clientset) *ResourceConsumer

NewStaticResourceConsumer TODO this still defaults to replication controller

func (*ResourceConsumer) CleanUp

func (rc *ResourceConsumer) CleanUp()

CleanUp func

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

func (*ResourceConsumer) EnsureDesiredReplicas

func (rc *ResourceConsumer) EnsureDesiredReplicas(desiredReplicas int, duration time.Duration)

EnsureDesiredReplicas func

func (*ResourceConsumer) GetReplicas

func (rc *ResourceConsumer) GetReplicas() int

GetReplicas func

func (*ResourceConsumer) Pause

func (rc *ResourceConsumer) Pause()

Pause stops background goroutines responsible for consuming resources.

func (*ResourceConsumer) Resume

func (rc *ResourceConsumer) Resume()

Resume starts background goroutines responsible for consuming resources.

func (*ResourceConsumer) WaitForReplicas

func (rc *ResourceConsumer) WaitForReplicas(desiredReplicas int, duration time.Duration)

WaitForReplicas func

Jump to

Keyboard shortcuts

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