api

package
v1.17.0-beta.0 Latest Latest
Warning

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

Go to latest
Published: Oct 29, 2019 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package api contains scheduler API objects.

Index

Constants

View Source
const (
	// DefaultPercentageOfNodesToScore defines the percentage of nodes of all nodes
	// that once found feasible, the scheduler stops looking for more nodes.
	DefaultPercentageOfNodesToScore = 50

	// CustomPriorityMaxScore is the max score UtilizationShapePoint expects.
	CustomPriorityMaxScore int64 = 10
)
View Source
const (
	// TaintNodeNotReady will be added when node is not ready
	// and feature-gate for TaintBasedEvictions flag is enabled,
	// and removed when node becomes ready.
	TaintNodeNotReady = "node.kubernetes.io/not-ready"

	// TaintNodeUnreachable will be added when node becomes unreachable
	// (corresponding to NodeReady status ConditionUnknown)
	// and feature-gate for TaintBasedEvictions flag is enabled,
	// and removed when node becomes reachable (NodeReady status ConditionTrue).
	TaintNodeUnreachable = "node.kubernetes.io/unreachable"

	// TaintNodeUnschedulable will be added when node becomes unschedulable
	// and feature-gate for TaintNodesByCondition flag is enabled,
	// and removed when node becomes scheduable.
	TaintNodeUnschedulable = "node.kubernetes.io/unschedulable"

	// TaintNodeMemoryPressure will be added when node has memory pressure
	// and feature-gate for TaintNodesByCondition flag is enabled,
	// and removed when node has enough memory.
	TaintNodeMemoryPressure = "node.kubernetes.io/memory-pressure"

	// TaintNodeDiskPressure will be added when node has disk pressure
	// and feature-gate for TaintNodesByCondition flag is enabled,
	// and removed when node has enough disk.
	TaintNodeDiskPressure = "node.kubernetes.io/disk-pressure"

	// TaintNodeNetworkUnavailable will be added when node's network is unavailable
	// and feature-gate for TaintNodesByCondition flag is enabled,
	// and removed when network becomes ready.
	TaintNodeNetworkUnavailable = "node.kubernetes.io/network-unavailable"

	// TaintNodePIDPressure will be added when node has pid pressure
	// and feature-gate for TaintNodesByCondition flag is enabled,
	// and removed when node has enough disk.
	TaintNodePIDPressure = "node.kubernetes.io/pid-pressure"

	// TaintExternalCloudProvider sets this taint on a node to mark it as unusable,
	// when kubelet is started with the "external" cloud provider, until a controller
	// from the cloud-controller-manager intitializes this node, and then removes
	// the taint
	TaintExternalCloudProvider = "node.cloudprovider.kubernetes.io/uninitialized"

	// TaintNodeShutdown when node is shutdown in external cloud provider
	TaintNodeShutdown = "node.cloudprovider.kubernetes.io/shutdown"

	// NodeFieldSelectorKeyNodeName ('metadata.name') uses this as node field selector key
	// when selecting node by node's name.
	NodeFieldSelectorKeyNodeName = api.ObjectNameField
)

Variables

View Source
var (
	// SchemeBuilder defines a SchemeBuilder object.
	SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
	// AddToScheme is used to add stored functions to scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)
View Source
var Scheme = runtime.NewScheme()

Scheme is the default instance of runtime.Scheme to which types in the Kubernetes API are already registered. TODO: remove this, scheduler should not have its own scheme.

View Source
var SchemeGroupVersion = schema.GroupVersion{Group: "", Version: runtime.APIVersionInternal}

SchemeGroupVersion is group version used to register these objects TODO this should be in the "scheduler" group

Functions

This section is empty.

Types

type ExtenderConfig

type ExtenderConfig struct {
	// URLPrefix at which the extender is available
	URLPrefix string
	// Verb for the filter call, empty if not supported. This verb is appended to the URLPrefix when issuing the filter call to extender.
	FilterVerb string
	// Verb for the preempt call, empty if not supported. This verb is appended to the URLPrefix when issuing the preempt call to extender.
	PreemptVerb string
	// Verb for the prioritize call, empty if not supported. This verb is appended to the URLPrefix when issuing the prioritize call to extender.
	PrioritizeVerb string
	// The numeric multiplier for the node scores that the prioritize call generates.
	// The weight should be a positive integer
	Weight int64
	// Verb for the bind call, empty if not supported. This verb is appended to the URLPrefix when issuing the bind call to extender.
	// If this method is implemented by the extender, it is the extender's responsibility to bind the pod to apiserver. Only one extender
	// can implement this function.
	BindVerb string
	// EnableHTTPS specifies whether https should be used to communicate with the extender
	EnableHTTPS bool
	// TLSConfig specifies the transport layer security config
	TLSConfig *ExtenderTLSConfig
	// HTTPTimeout specifies the timeout duration for a call to the extender. Filter timeout fails the scheduling of the pod. Prioritize
	// timeout is ignored, k8s/other extenders priorities are used to select the node.
	HTTPTimeout time.Duration
	// NodeCacheCapable specifies that the extender is capable of caching node information,
	// so the scheduler should only send minimal information about the eligible nodes
	// assuming that the extender already cached full details of all nodes in the cluster
	NodeCacheCapable bool
	// ManagedResources is a list of extended resources that are managed by
	// this extender.
	// - A pod will be sent to the extender on the Filter, Prioritize and Bind
	//   (if the extender is the binder) phases iff the pod requests at least
	//   one of the extended resources in this list. If empty or unspecified,
	//   all pods will be sent to this extender.
	// - If IgnoredByScheduler is set to true for a resource, kube-scheduler
	//   will skip checking the resource in predicates.
	// +optional
	ManagedResources []ExtenderManagedResource
	// Ignorable specifies if the extender is ignorable, i.e. scheduling should not
	// fail when the extender returns an error or is not reachable.
	Ignorable bool
}

ExtenderConfig holds the parameters used to communicate with the extender. If a verb is unspecified/empty, it is assumed that the extender chose not to provide that extension.

func (*ExtenderConfig) DeepCopy

func (in *ExtenderConfig) DeepCopy() *ExtenderConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExtenderConfig.

func (*ExtenderConfig) DeepCopyInto

func (in *ExtenderConfig) DeepCopyInto(out *ExtenderConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExtenderManagedResource

type ExtenderManagedResource struct {
	// Name is the extended resource name.
	Name v1.ResourceName
	// IgnoredByScheduler indicates whether kube-scheduler should ignore this
	// resource when applying predicates.
	IgnoredByScheduler bool
}

ExtenderManagedResource describes the arguments of extended resources managed by an extender.

func (*ExtenderManagedResource) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExtenderManagedResource.

func (*ExtenderManagedResource) DeepCopyInto

func (in *ExtenderManagedResource) DeepCopyInto(out *ExtenderManagedResource)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExtenderTLSConfig added in v1.14.0

type ExtenderTLSConfig struct {
	// Server should be accessed without verifying the TLS certificate. For testing only.
	Insecure bool
	// ServerName is passed to the server for SNI and is used in the client to check server
	// certificates against. If ServerName is empty, the hostname used to contact the
	// server is used.
	ServerName string

	// Server requires TLS client certificate authentication
	CertFile string
	// Server requires TLS client certificate authentication
	KeyFile string
	// Trusted root certificates for server
	CAFile string

	// CertData holds PEM-encoded bytes (typically read from a client certificate file).
	// CertData takes precedence over CertFile
	CertData []byte
	// KeyData holds PEM-encoded bytes (typically read from a client certificate key file).
	// KeyData takes precedence over KeyFile
	KeyData []byte
	// CAData holds PEM-encoded bytes (typically read from a root certificates bundle).
	// CAData takes precedence over CAFile
	CAData []byte
}

ExtenderTLSConfig contains settings to enable TLS with extender

func (*ExtenderTLSConfig) DeepCopy added in v1.14.0

func (in *ExtenderTLSConfig) DeepCopy() *ExtenderTLSConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExtenderTLSConfig.

func (*ExtenderTLSConfig) DeepCopyInto added in v1.14.0

func (in *ExtenderTLSConfig) DeepCopyInto(out *ExtenderTLSConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type LabelPreference

type LabelPreference struct {
	// Used to identify node "groups"
	Label string
	// This is a boolean flag
	// If true, higher priority is given to nodes that have the label
	// If false, higher priority is given to nodes that do not have the label
	Presence bool
}

LabelPreference holds the parameters that are used to configure the corresponding priority function

func (*LabelPreference) DeepCopy

func (in *LabelPreference) DeepCopy() *LabelPreference

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LabelPreference.

func (*LabelPreference) DeepCopyInto

func (in *LabelPreference) DeepCopyInto(out *LabelPreference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type LabelsPresence

type LabelsPresence struct {
	// The list of labels that identify node "groups"
	// All of the labels should be either present (or absent) for the node to be considered a fit for hosting the pod
	Labels []string
	// The boolean flag that indicates whether the labels should be present or absent from the node
	Presence bool
}

LabelsPresence holds the parameters that are used to configure the corresponding predicate in scheduler policy configuration.

func (*LabelsPresence) DeepCopy

func (in *LabelsPresence) DeepCopy() *LabelsPresence

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LabelsPresence.

func (*LabelsPresence) DeepCopyInto

func (in *LabelsPresence) DeepCopyInto(out *LabelsPresence)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Policy

type Policy struct {
	metav1.TypeMeta
	// Holds the information to configure the fit predicate functions.
	// If unspecified, the default predicate functions will be applied.
	// If empty list, all predicates (except the mandatory ones) will be
	// bypassed.
	Predicates []PredicatePolicy
	// Holds the information to configure the priority functions.
	// If unspecified, the default priority functions will be applied.
	// If empty list, all priority functions will be bypassed.
	Priorities []PriorityPolicy
	// Holds the information to communicate with the extender(s)
	ExtenderConfigs []ExtenderConfig
	// RequiredDuringScheduling affinity is not symmetric, but there is an implicit PreferredDuringScheduling affinity rule
	// corresponding to every RequiredDuringScheduling affinity rule.
	// HardPodAffinitySymmetricWeight represents the weight of implicit PreferredDuringScheduling affinity rule, in the range 1-100.
	HardPodAffinitySymmetricWeight int32

	// When AlwaysCheckAllPredicates is set to true, scheduler checks all
	// the configured predicates even after one or more of them fails.
	// When the flag is set to false, scheduler skips checking the rest
	// of the predicates after it finds one predicate that failed.
	AlwaysCheckAllPredicates bool
}

Policy describes a struct of a policy resource in api.

func (*Policy) DeepCopy

func (in *Policy) DeepCopy() *Policy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Policy.

func (*Policy) DeepCopyInto

func (in *Policy) DeepCopyInto(out *Policy)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Policy) DeepCopyObject

func (in *Policy) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type PredicateArgument

type PredicateArgument struct {
	// The predicate that provides affinity for pods belonging to a service
	// It uses a label to identify nodes that belong to the same "group"
	ServiceAffinity *ServiceAffinity
	// The predicate that checks whether a particular node has a certain label
	// defined or not, regardless of value
	LabelsPresence *LabelsPresence
}

PredicateArgument represents the arguments to configure predicate functions in scheduler policy configuration. Only one of its members may be specified

func (*PredicateArgument) DeepCopy

func (in *PredicateArgument) DeepCopy() *PredicateArgument

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PredicateArgument.

func (*PredicateArgument) DeepCopyInto

func (in *PredicateArgument) DeepCopyInto(out *PredicateArgument)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PredicatePolicy

type PredicatePolicy struct {
	// Identifier of the predicate policy
	// For a custom predicate, the name can be user-defined
	// For the Kubernetes provided predicates, the name is the identifier of the pre-defined predicate
	Name string
	// Holds the parameters to configure the given predicate
	Argument *PredicateArgument
}

PredicatePolicy describes a struct of a predicate policy.

func (*PredicatePolicy) DeepCopy

func (in *PredicatePolicy) DeepCopy() *PredicatePolicy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PredicatePolicy.

func (*PredicatePolicy) DeepCopyInto

func (in *PredicatePolicy) DeepCopyInto(out *PredicatePolicy)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PriorityArgument

type PriorityArgument struct {
	// The priority function that ensures a good spread (anti-affinity) for pods belonging to a service
	// It uses a label to identify nodes that belong to the same "group"
	ServiceAntiAffinity *ServiceAntiAffinity
	// The priority function that checks whether a particular node has a certain label
	// defined or not, regardless of value
	LabelPreference *LabelPreference
	// The RequestedToCapacityRatio priority function is parametrized with function shape.
	RequestedToCapacityRatioArguments *RequestedToCapacityRatioArguments
}

PriorityArgument represents the arguments to configure priority functions in scheduler policy configuration. Only one of its members may be specified

func (*PriorityArgument) DeepCopy

func (in *PriorityArgument) DeepCopy() *PriorityArgument

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PriorityArgument.

func (*PriorityArgument) DeepCopyInto

func (in *PriorityArgument) DeepCopyInto(out *PriorityArgument)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PriorityPolicy

type PriorityPolicy struct {
	// Identifier of the priority policy
	// For a custom priority, the name can be user-defined
	// For the Kubernetes provided priority functions, the name is the identifier of the pre-defined priority function
	Name string
	// The numeric multiplier for the node scores that the priority function generates
	// The weight should be a positive integer
	Weight int64
	// Holds the parameters to configure the given priority function
	Argument *PriorityArgument
}

PriorityPolicy describes a struct of a priority policy.

func (*PriorityPolicy) DeepCopy

func (in *PriorityPolicy) DeepCopy() *PriorityPolicy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PriorityPolicy.

func (*PriorityPolicy) DeepCopyInto

func (in *PriorityPolicy) DeepCopyInto(out *PriorityPolicy)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RequestedToCapacityRatioArguments added in v1.11.0

type RequestedToCapacityRatioArguments struct {
	// Array of point defining priority function shape
	UtilizationShape []UtilizationShapePoint
	Resources        []ResourceSpec
}

RequestedToCapacityRatioArguments holds arguments specific to RequestedToCapacityRatio priority function.

func (*RequestedToCapacityRatioArguments) DeepCopy added in v1.11.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RequestedToCapacityRatioArguments.

func (*RequestedToCapacityRatioArguments) DeepCopyInto added in v1.11.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ResourceSpec added in v1.16.0

type ResourceSpec struct {
	// Name of the resource to be managed by RequestedToCapacityRatio function.
	Name v1.ResourceName
	// Weight of the resource.
	Weight int64
}

ResourceSpec represents single resource for bin packing of priority RequestedToCapacityRatioArguments.

func (*ResourceSpec) DeepCopy added in v1.16.0

func (in *ResourceSpec) DeepCopy() *ResourceSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSpec.

func (*ResourceSpec) DeepCopyInto added in v1.16.0

func (in *ResourceSpec) DeepCopyInto(out *ResourceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceAffinity

type ServiceAffinity struct {
	// The list of labels that identify node "groups"
	// All of the labels should match for the node to be considered a fit for hosting the pod
	Labels []string
}

ServiceAffinity holds the parameters that are used to configure the corresponding predicate in scheduler policy configuration.

func (*ServiceAffinity) DeepCopy

func (in *ServiceAffinity) DeepCopy() *ServiceAffinity

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAffinity.

func (*ServiceAffinity) DeepCopyInto

func (in *ServiceAffinity) DeepCopyInto(out *ServiceAffinity)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceAntiAffinity

type ServiceAntiAffinity struct {
	// Used to identify node "groups"
	Label string
}

ServiceAntiAffinity holds the parameters that are used to configure the corresponding priority function

func (*ServiceAntiAffinity) DeepCopy

func (in *ServiceAntiAffinity) DeepCopy() *ServiceAntiAffinity

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceAntiAffinity.

func (*ServiceAntiAffinity) DeepCopyInto

func (in *ServiceAntiAffinity) DeepCopyInto(out *ServiceAntiAffinity)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type UtilizationShapePoint added in v1.11.0

type UtilizationShapePoint struct {
	// Utilization (x axis). Valid values are 0 to 100. Fully utilized node maps to 100.
	Utilization int32
	// Score assigned to given utilization (y axis). Valid values are 0 to 10.
	Score int32
}

UtilizationShapePoint represents single point of priority function shape

func (*UtilizationShapePoint) DeepCopy added in v1.11.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UtilizationShapePoint.

func (*UtilizationShapePoint) DeepCopyInto added in v1.11.0

func (in *UtilizationShapePoint) DeepCopyInto(out *UtilizationShapePoint)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

Directories

Path Synopsis
Package v1 contains scheduler API objects.
Package v1 contains scheduler API objects.

Jump to

Keyboard shortcuts

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