plugin

package
v0.1.4 Latest Latest
Warning

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

Go to latest
Published: Feb 7, 2023 License: Apache-2.0 Imports: 25 Imported by: 0

Documentation

Index

Constants

View Source
const ConfigMapKey = "autoscaler-enforcer-config.json"
View Source
const ConfigMapName = "scheduler-plugin-config"
View Source
const ConfigMapNamespace = "kube-system"
View Source
const InitConfigMapTimeoutSeconds = 5
View Source
const Name = "AutoscaleEnforcer"

Variables

View Source
var ContentTypeError string = "text/plain"
View Source
var ContentTypeJSON string = "application/json"
View Source
var MaxHTTPBodySize int64 = 1 << 10 // 1 KiB

Functions

func NewAutoscaleEnforcerPlugin

func NewAutoscaleEnforcerPlugin(ctx context.Context) func(runtime.Object, framework.Handle) (framework.Plugin, error)

Types

type AutoscaleEnforcer

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

AutoscaleEnforcer is the scheduler plugin to coordinate autoscaling

func (*AutoscaleEnforcer) Filter

func (e *AutoscaleEnforcer) Filter(
	ctx context.Context, state *framework.CycleState, pod *corev1.Pod, nodeInfo *framework.NodeInfo,
) *framework.Status

Filter gives our plugin a chance to signal that a pod shouldn't be put onto a particular node

Required for framework.FilterPlugin

func (*AutoscaleEnforcer) Name

func (e *AutoscaleEnforcer) Name() string

Name returns the name of the AutoscaleEnforcer plugin

Required for framework.Plugin

func (*AutoscaleEnforcer) Reserve

func (e *AutoscaleEnforcer) Reserve(
	ctx context.Context, state *framework.CycleState, pod *corev1.Pod, nodeName string,
) *framework.Status

Reserve signals to our plugin that a particular pod will (probably) be bound to a node, giving us a chance to both (a) reserve the resources it needs within the node and (b) reject the pod if there aren't enough.

Required for framework.ReservePlugin

func (*AutoscaleEnforcer) Score

func (e *AutoscaleEnforcer) Score(
	ctx context.Context, state *framework.CycleState, pod *corev1.Pod, nodeName string,
) (int64, *framework.Status)

Score allows our plugin to express which nodes should be preferred for scheduling new pods onto

Even though this function is given (pod, node) pairs, our scoring is only really dependent on values of the node. However, we have special handling for when the pod no longer fits in the node (even though it might have during the Filter plugin) - we can't return a failure, because that would cause *all* scheduling of the pod to fail, so we instead return the minimum score.

The scores might not be consistent with each other, due to ongoing changes in the node. That's ok, because nothing relies on strict correctness here, and they should be approximately correct anyways.

Required for framework.ScorePlugin

func (*AutoscaleEnforcer) ScoreExtensions

func (e *AutoscaleEnforcer) ScoreExtensions() framework.ScoreExtensions

ScoreExtensions is required for framework.ScorePlugin, and can return nil if it's not used

func (*AutoscaleEnforcer) Unreserve

func (e *AutoscaleEnforcer) Unreserve(
	ctx context.Context, state *framework.CycleState, pod *corev1.Pod, nodeName string,
)

Unreserve marks a pod as no longer on-track to being bound to a node, so we can release the resources we previously reserved for it.

Required for framework.ReservePlugin.

Note: the documentation for ReservePlugin indicates that Unreserve both (a) must be idempotent and (b) may be called without a previous call to Reserve for the same pod.

Jump to

Keyboard shortcuts

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