Back to Charts

**DEPRECATED** This repository has moved

stable/cluster-overprovisioner/README.md

latest7.3 KB
Original Source

DEPRECATED This repository has moved

With upcoming deprecation of helm/charts repository, the cluster-overprovisioner Helm Chart has moved to Delivery Hero's Helm Repository: https://github.com/deliveryhero/helm-charts

You can use this new Helm repository by doing:

bash
helm repo add deliveryhero https://charts.deliveryhero.io/public
helm search repo deliveryhero

You can now use deliveryhero/cluster-overprovisioner instead of stable/cluster-overprovisioner in all your Helm commands, e.g.:

bash
# New installation
helm install --name <RELEASE_NAME> deliveryhero/cluster-overprovisioner
# Upgrade existing installation
helm upgrade --name <RELEASE_NAME> deliveryhero/cluster-overprovisioner

Cluster overprovisioner

This chart provide a buffer for cluster autoscaling to allow overprovisioning of cluster nodes. This is desired when you have work loads that need to scale up quickly without waiting for the new cluster nodes to be created and join the cluster.

It works but creating a deployment that creates pods of a lower than default PriorityClass. These pods request resources from the cluster but don't actually consume any resources. These pods are then evicted allowing other normal pods are created while also triggering a scale-up by the cluster-autoscaler.

This approach is the current recommended method to achieve overprovisioning.

Prerequisites

  • Kubernetes 1.11+ with Beta APIs enabled or 1.8-1.10 with alpha APIs enabled
  • Pod priority and preemption enabled in your cluster. Pod priority and preemption is enabled by default in Kubernetes >= 1.11.
  • cluster-autoscaler installed in your cluster with --expendable-pods-priority-cutoff=-10 . Priority cutoff has a default of -10 in cluster-autoscaler >= 1.12.

Installing the Chart

To install the chart with the release name my-release and default configuration:

shell
$ helm install --name my-release stable/cluster-overprovisioner

Uninstalling the Chart

To delete the chart:

shell
$ helm delete my-release

Configuration

Some thought or experimentation is required to set deployment.resources and deployment.replicaCount correctly. Aspects such as cluster size, costs and size of buffer required should be considered.

The following table lists the configurable parameters for this chart and their default values.

ParameterDescriptionDefault
podSecurityContextPod security context object{}
priorityClassOverprovision.nameName of the overprovision priorityClassoverprovision
priorityClassOverprovision.valuePriority value of the overprovision priorityClass-1
priorityClassDefault.enabledIf true, enable default priorityClasstrue
priorityClassDefault.nameName of the default priorityClassdefault
priorityClassDefault.valuePriority value of the default priorityClass0
image.repositoryImage repositoryk8s.gcr.io/pause
image.tagImage tag3.1
image.pullSecretsImage pull secrets[]
image.pullPolicyContainer pull policyIfNotPresent
fullnameOverrideOverride the fullname of the chartnil
nameOverrideOverride the name of the chartnil
deploymentsDefine optional additional deployments[]
deployments[].nameName for additional deployments (will be added as label cluster-over-provisioner-name, so you can match it with affinity rules)``
deployments[].replicaCountNumber of replicas1
deployments[].annotationsAnnotations to add to the deployment{}
deployments[].resourcesResources for the overprovision pods{}
deployments[].affinityMap of node/pod affinities{}
deployments[].nodeSelectorNode labels for pod assignment{}
deployments[].tolerationsOptional deployment tolerations[]
deployments[].labelsOptional labels tolerations{}

Specify each parameter using the --set key=value[,key=value] argument to helm install or provide a YAML file containing the values for the above parameters:

shell
$ helm install --name my-release stable/cluster-overprovisioner --values values.yaml