diff --git a/content/en/docs/concepts/scheduling-eviction/kube-scheduler.md b/content/en/docs/concepts/scheduling-eviction/kube-scheduler.md index a3e548d237..0944ecc768 100644 --- a/content/en/docs/concepts/scheduling-eviction/kube-scheduler.md +++ b/content/en/docs/concepts/scheduling-eviction/kube-scheduler.md @@ -87,6 +87,7 @@ of the scheduler: * Read about [scheduler performance tuning](/docs/concepts/scheduling-eviction/scheduler-perf-tuning/) * Read about [Pod topology spread constraints](/docs/concepts/workloads/pods/pod-topology-spread-constraints/) * Read the [reference documentation](/docs/reference/command-line-tools-reference/kube-scheduler/) for kube-scheduler +* Read the [kube-scheduler config (v1beta1)](/docs/reference/config-api/kube-scheduler-config.v1beta1/) reference * Learn about [configuring multiple schedulers](/docs/tasks/extend-kubernetes/configure-multiple-schedulers/) * Learn about [topology management policies](/docs/tasks/administer-cluster/topology-manager/) * Learn about [Pod Overhead](/docs/concepts/scheduling-eviction/pod-overhead/) @@ -94,3 +95,4 @@ of the scheduler: * [Volume Topology Support](/docs/concepts/storage/storage-classes/#volume-binding-mode) * [Storage Capacity Tracking](/docs/concepts/storage/storage-capacity/) * [Node-specific Volume Limits](/docs/concepts/storage/storage-limits/) + diff --git a/content/en/docs/concepts/scheduling-eviction/scheduler-perf-tuning.md b/content/en/docs/concepts/scheduling-eviction/scheduler-perf-tuning.md index 7936f9dedc..24283f2efa 100644 --- a/content/en/docs/concepts/scheduling-eviction/scheduler-perf-tuning.md +++ b/content/en/docs/concepts/scheduling-eviction/scheduler-perf-tuning.md @@ -24,8 +24,6 @@ in a process called _Binding_. This page explains performance tuning optimizations that are relevant for large Kubernetes clusters. - - In large clusters, you can tune the scheduler's behaviour balancing @@ -44,8 +42,10 @@ should use its compiled-in default. If you set `percentageOfNodesToScore` above 100, kube-scheduler acts as if you had set a value of 100. -To change the value, edit the kube-scheduler configuration file (this is likely -to be `/etc/kubernetes/config/kube-scheduler.yaml`), then restart the scheduler. +To change the value, edit the +[kube-scheduler configuration file](/docs/reference/config-api/kube-scheduler-config.v1beta1/) +and then restart the scheduler. +In many cases, the configuration file can be found at `/etc/kubernetes/config/kube-scheduler.yaml`. After you have made this change, you can run @@ -99,7 +99,6 @@ algorithmSource: percentageOfNodesToScore: 50 ``` - ## Tuning percentageOfNodesToScore `percentageOfNodesToScore` must be a value between 1 and 100 with the default @@ -160,4 +159,7 @@ Node 1, Node 5, Node 2, Node 6, Node 3, Node 4 After going over all the Nodes, it goes back to Node 1. +## {{% heading "whatsnext" %}} + +* Check the [kube-scheduler configuration reference (v1beta1)](/docs/reference/config-api/kube-scheduler-config.v1beta1/) diff --git a/content/en/docs/reference/_index.md b/content/en/docs/reference/_index.md index c4792c079c..29dfca82b7 100644 --- a/content/en/docs/reference/_index.md +++ b/content/en/docs/reference/_index.md @@ -22,8 +22,6 @@ This section of the Kubernetes documentation contains references. * [Glossary](/docs/reference/glossary/) - a comprehensive, standardized list of Kubernetes terminology - - * [Kubernetes API Reference](/docs/reference/kubernetes-api/) * [One-page API Reference for Kubernetes {{< param "version" >}}](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/) * [Using The Kubernetes API](/docs/reference/using-api/) - overview of the API for Kubernetes. @@ -67,6 +65,8 @@ client libraries: ## Config APIs * [kube-proxy configuration (v1alpha1)](/docs/reference/config-api/kube-proxy-config.v1alpha1/) +* [kube-scheduler config (v1beta1)](/docs/reference/config-api/kube-scheduler-config.v1beta1/) + ## Config APIs diff --git a/content/en/docs/reference/config-api/kube-scheduler-config.v1beta1.md b/content/en/docs/reference/config-api/kube-scheduler-config.v1beta1.md new file mode 100644 index 0000000000..ac32e65674 --- /dev/null +++ b/content/en/docs/reference/config-api/kube-scheduler-config.v1beta1.md @@ -0,0 +1,2156 @@ +--- +title: kube-scheduler Configuration (v1beta1) +content_type: tool-reference +package: kubescheduler.config.k8s.io/v1 +auto_generated: true +--- + + +## Resource Types + + +- [Policy](#kubescheduler-config-k8s-io-v1-Policy) +- [DefaultPreemptionArgs](#kubescheduler-config-k8s-io-v1beta1-DefaultPreemptionArgs) +- [InterPodAffinityArgs](#kubescheduler-config-k8s-io-v1beta1-InterPodAffinityArgs) +- [KubeSchedulerConfiguration](#kubescheduler-config-k8s-io-v1beta1-KubeSchedulerConfiguration) +- [NodeAffinityArgs](#kubescheduler-config-k8s-io-v1beta1-NodeAffinityArgs) +- [NodeLabelArgs](#kubescheduler-config-k8s-io-v1beta1-NodeLabelArgs) +- [NodeResourcesFitArgs](#kubescheduler-config-k8s-io-v1beta1-NodeResourcesFitArgs) +- [NodeResourcesLeastAllocatedArgs](#kubescheduler-config-k8s-io-v1beta1-NodeResourcesLeastAllocatedArgs) +- [NodeResourcesMostAllocatedArgs](#kubescheduler-config-k8s-io-v1beta1-NodeResourcesMostAllocatedArgs) +- [PodTopologySpreadArgs](#kubescheduler-config-k8s-io-v1beta1-PodTopologySpreadArgs) +- [RequestedToCapacityRatioArgs](#kubescheduler-config-k8s-io-v1beta1-RequestedToCapacityRatioArgs) +- [ServiceAffinityArgs](#kubescheduler-config-k8s-io-v1beta1-ServiceAffinityArgs) +- [VolumeBindingArgs](#kubescheduler-config-k8s-io-v1beta1-VolumeBindingArgs) + + + + +## `Policy` {#kubescheduler-config-k8s-io-v1-Policy} + + + + + +Policy describes a struct for a policy resource used in api. + +
| Field | Description |
|---|---|
apiVersionstring | kubescheduler.config.k8s.io/v1 |
kindstring | Policy |
predicates [Required]+ []PredicatePolicy
+ |
++ Holds the information to configure the fit predicate functions | +
priorities [Required]+ []PriorityPolicy
+ |
++ Holds the information to configure the priority functions | +
extenders [Required]+ []LegacyExtender
+ |
++ Holds the information to communicate with the extender(s) | +
hardPodAffinitySymmetricWeight [Required]+ int32
+ |
++ 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. | +
alwaysCheckAllPredicates [Required]+ bool
+ |
++ 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. | +
| Field | Description |
|---|---|
name [Required]+ string
+ |
++ Name is the extended resource name. | +
ignoredByScheduler [Required]+ bool
+ |
++ IgnoredByScheduler indicates whether kube-scheduler should ignore this +resource when applying predicates. | +
| Field | Description |
|---|---|
insecure [Required]+ bool
+ |
++ Server should be accessed without verifying the TLS certificate. For testing only. | +
serverName [Required]+ string
+ |
++ 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. | +
certFile [Required]+ string
+ |
++ Server requires TLS client certificate authentication | +
keyFile [Required]+ string
+ |
++ Server requires TLS client certificate authentication | +
caFile [Required]+ string
+ |
++ Trusted root certificates for server | +
certData [Required]+ []byte
+ |
++ CertData holds PEM-encoded bytes (typically read from a client certificate file). +CertData takes precedence over CertFile | +
keyData [Required]+ []byte
+ |
++ KeyData holds PEM-encoded bytes (typically read from a client certificate key file). +KeyData takes precedence over KeyFile | +
caData [Required]+ []byte
+ |
++ CAData holds PEM-encoded bytes (typically read from a root certificates bundle). +CAData takes precedence over CAFile | +
| Field | Description |
|---|---|
label [Required]+ string
+ |
++ Used to identify node "groups" | +
presence [Required]+ bool
+ |
++ 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 | +
| Field | Description |
|---|---|
labels [Required]+ []string
+ |
++ 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 | +
presence [Required]+ bool
+ |
++ The boolean flag that indicates whether the labels should be present or absent from the node | +
| Field | Description |
|---|---|
urlPrefix [Required]+ string
+ |
++ URLPrefix at which the extender is available | +
filterVerb [Required]+ string
+ |
++ Verb for the filter call, empty if not supported. This verb is appended to the URLPrefix when issuing the filter call to extender. | +
preemptVerb [Required]+ string
+ |
++ Verb for the preempt call, empty if not supported. This verb is appended to the URLPrefix when issuing the preempt call to extender. | +
prioritizeVerb [Required]+ string
+ |
++ Verb for the prioritize call, empty if not supported. This verb is appended to the URLPrefix when issuing the prioritize call to extender. | +
weight [Required]+ int64
+ |
++ The numeric multiplier for the node scores that the prioritize call generates. +The weight should be a positive integer | +
bindVerb [Required]+ string
+ |
++ 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. | +
enableHttps [Required]+ bool
+ |
++ EnableHTTPS specifies whether https should be used to communicate with the extender | +
tlsConfig [Required]+ ExtenderTLSConfig
+ |
++ TLSConfig specifies the transport layer security config | +
httpTimeout [Required]+ time.Duration
+ |
++ 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. | +
nodeCacheCapable [Required]+ bool
+ |
++ 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 | +
managedResources+ []ExtenderManagedResource
+ |
++ 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. | +
ignorable [Required]+ bool
+ |
++ Ignorable specifies if the extender is ignorable, i.e. scheduling should not +fail when the extender returns an error or is not reachable. | +
| Field | Description |
|---|---|
serviceAffinity [Required]+ ServiceAffinity
+ |
++ The predicate that provides affinity for pods belonging to a service +It uses a label to identify nodes that belong to the same "group" | +
labelsPresence [Required]+ LabelsPresence
+ |
++ The predicate that checks whether a particular node has a certain label +defined or not, regardless of value | +
| Field | Description |
|---|---|
name [Required]+ string
+ |
++ 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 | +
argument [Required]+ PredicateArgument
+ |
++ Holds the parameters to configure the given predicate | +
| Field | Description |
|---|---|
serviceAntiAffinity [Required]+ ServiceAntiAffinity
+ |
++ 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" | +
labelPreference [Required]+ LabelPreference
+ |
++ The priority function that checks whether a particular node has a certain label +defined or not, regardless of value | +
requestedToCapacityRatioArguments [Required]+ RequestedToCapacityRatioArguments
+ |
++ The RequestedToCapacityRatio priority function is parametrized with function shape. | +
| Field | Description |
|---|---|
name [Required]+ string
+ |
++ 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 | +
weight [Required]+ int64
+ |
++ The numeric multiplier for the node scores that the priority function generates +The weight should be non-zero and can be a positive or a negative integer | +
argument [Required]+ PriorityArgument
+ |
++ Holds the parameters to configure the given priority function | +
| Field | Description |
|---|---|
shape [Required]+ []UtilizationShapePoint
+ |
++ Array of point defining priority function shape. | +
resources [Required]+ []ResourceSpec
+ |
++ No description provided. + | +
| Field | Description |
|---|---|
name [Required]+ string
+ |
++ Name of the resource to be managed by RequestedToCapacityRatio function. | +
weight [Required]+ int64
+ |
++ Weight of the resource. | +
| Field | Description |
|---|---|
labels [Required]+ []string
+ |
++ 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 | +
| Field | Description |
|---|---|
label [Required]+ string
+ |
++ Used to identify node "groups" | +
| Field | Description |
|---|---|
utilization [Required]+ int32
+ |
++ Utilization (x axis). Valid values are 0 to 100. Fully utilized node maps to 100. | +
score [Required]+ int32
+ |
++ Score assigned to given utilization (y axis). Valid values are 0 to 10. | +
| Field | Description |
|---|---|
kubeconfig [Required]+ string
+ |
++ kubeconfig is the path to a KubeConfig file. | +
acceptContentTypes [Required]+ string
+ |
++ acceptContentTypes defines the Accept header sent by clients when connecting to a server, overriding the +default value of 'application/json'. This field will control all connections to the server used by a particular +client. | +
contentType [Required]+ string
+ |
++ contentType is the content type used when sending data to the server from this client. | +
qps [Required]+ float32
+ |
++ qps controls the number of queries per second allowed for this connection. | +
burst [Required]+ int32
+ |
++ burst allows extra queries to accumulate when a client is exceeding its rate. | +
| Field | Description |
|---|---|
enableProfiling [Required]+ bool
+ |
++ enableProfiling enables profiling via web interface host:port/debug/pprof/ | +
enableContentionProfiling [Required]+ bool
+ |
++ enableContentionProfiling enables lock contention profiling, if +enableProfiling is true. | +
| Field | Description |
|---|---|
leaderElect [Required]+ bool
+ |
++ leaderElect enables a leader election client to gain leadership +before executing the main loop. Enable this when running replicated +components for high availability. | +
leaseDuration [Required]+ meta/v1.Duration
+ |
++ leaseDuration is the duration that non-leader candidates will wait +after observing a leadership renewal until attempting to acquire +leadership of a led but unrenewed leader slot. This is effectively the +maximum duration that a leader can be stopped before it is replaced +by another candidate. This is only applicable if leader election is +enabled. | +
renewDeadline [Required]+ meta/v1.Duration
+ |
++ renewDeadline is the interval between attempts by the acting master to +renew a leadership slot before it stops leading. This must be less +than or equal to the lease duration. This is only applicable if leader +election is enabled. | +
retryPeriod [Required]+ meta/v1.Duration
+ |
++ retryPeriod is the duration the clients should wait between attempting +acquisition and renewal of a leadership. This is only applicable if +leader election is enabled. | +
resourceLock [Required]+ string
+ |
++ resourceLock indicates the resource object type that will be used to lock +during leader election cycles. | +
resourceName [Required]+ string
+ |
++ resourceName indicates the name of resource object that will be used to lock +during leader election cycles. | +
resourceNamespace [Required]+ string
+ |
++ resourceName indicates the namespace of resource object that will be used to lock +during leader election cycles. | +
| Field | Description |
|---|---|
format [Required]+ string
+ |
++ Format Flag specifies the structure of log messages. +default value of format is `text` | +
sanitization [Required]+ bool
+ |
++ [Experimental] When enabled prevents logging of fields tagged as sensitive (passwords, keys, tokens). +Runtime log sanitization may introduce significant computation overhead and therefore should not be enabled in production.`) | +
| Field | Description |
|---|---|
apiVersionstring | kubescheduler.config.k8s.io/v1beta1 |
kindstring | DefaultPreemptionArgs |
minCandidateNodesPercentage [Required]+ int32
+ |
++ MinCandidateNodesPercentage is the minimum number of candidates to +shortlist when dry running preemption as a percentage of number of nodes. +Must be in the range [0, 100]. Defaults to 10% of the cluster size if +unspecified. | +
minCandidateNodesAbsolute [Required]+ int32
+ |
++ MinCandidateNodesAbsolute is the absolute minimum number of candidates to +shortlist. The likely number of candidates enumerated for dry running +preemption is given by the formula: +numCandidates = max(numNodes ∗ minCandidateNodesPercentage, minCandidateNodesAbsolute) +We say "likely" because there are other factors such as PDB violations +that play a role in the number of candidates shortlisted. Must be at least +0 nodes. Defaults to 100 nodes if unspecified. | +
| Field | Description |
|---|---|
apiVersionstring | kubescheduler.config.k8s.io/v1beta1 |
kindstring | InterPodAffinityArgs |
hardPodAffinityWeight [Required]+ int32
+ |
++ HardPodAffinityWeight is the scoring weight for existing pods with a +matching hard affinity to the incoming pod. | +
| Field | Description |
|---|---|
apiVersionstring | kubescheduler.config.k8s.io/v1beta1 |
kindstring | KubeSchedulerConfiguration |
parallelism [Required]+ int32
+ |
++ Parallelism defines the amount of parallelism in algorithms for scheduling a Pods. Must be greater than 0. Defaults to 16 | +
leaderElection [Required]+ LeaderElectionConfiguration
+ |
++ LeaderElection defines the configuration of leader election client. | +
clientConnection [Required]+ ClientConnectionConfiguration
+ |
++ ClientConnection specifies the kubeconfig file and client connection +settings for the proxy server to use when communicating with the apiserver. | +
healthzBindAddress [Required]+ string
+ |
++ HealthzBindAddress is the IP address and port for the health check server to serve on, +defaulting to 0.0.0.0:10251 | +
metricsBindAddress [Required]+ string
+ |
++ MetricsBindAddress is the IP address and port for the metrics server to +serve on, defaulting to 0.0.0.0:10251. | +
DebuggingConfiguration [Required]+ DebuggingConfiguration
+ |
+(Members of DebuggingConfiguration are embedded into this type.)
+ DebuggingConfiguration holds configuration for Debugging related features
+TODO: We might wanna make this a substruct like Debugging componentbaseconfigv1alpha1.DebuggingConfiguration |
+
percentageOfNodesToScore [Required]+ int32
+ |
++ PercentageOfNodesToScore is the percentage of all nodes that once found feasible +for running a pod, the scheduler stops its search for more feasible nodes in +the cluster. This helps improve scheduler's performance. Scheduler always tries to find +at least "minFeasibleNodesToFind" feasible nodes no matter what the value of this flag is. +Example: if the cluster size is 500 nodes and the value of this flag is 30, +then scheduler stops finding further feasible nodes once it finds 150 feasible ones. +When the value is 0, default percentage (5%--50% based on the size of the cluster) of the +nodes will be scored. | +
podInitialBackoffSeconds [Required]+ int64
+ |
++ PodInitialBackoffSeconds is the initial backoff for unschedulable pods. +If specified, it must be greater than 0. If this value is null, the default value (1s) +will be used. | +
podMaxBackoffSeconds [Required]+ int64
+ |
++ PodMaxBackoffSeconds is the max backoff for unschedulable pods. +If specified, it must be greater than podInitialBackoffSeconds. If this value is null, +the default value (10s) will be used. | +
profiles [Required]+ []KubeSchedulerProfile
+ |
++ Profiles are scheduling profiles that kube-scheduler supports. Pods can +choose to be scheduled under a particular profile by setting its associated +scheduler name. Pods that don't specify any scheduler name are scheduled +with the "default-scheduler" profile, if present here. | +
extenders [Required]+ []Extender
+ |
++ Extenders are the list of scheduler extenders, each holding the values of how to communicate +with the extender. These extenders are shared by all scheduler profiles. | +
| Field | Description |
|---|---|
apiVersionstring | kubescheduler.config.k8s.io/v1beta1 |
kindstring | NodeAffinityArgs |
addedAffinity+ core/v1.NodeAffinity
+ |
++ AddedAffinity is applied to all Pods additionally to the NodeAffinity +specified in the PodSpec. That is, Nodes need to satisfy AddedAffinity +AND .spec.NodeAffinity. AddedAffinity is empty by default (all Nodes +match). +When AddedAffinity is used, some Pods with affinity requirements that match +a specific Node (such as Daemonset Pods) might remain unschedulable. | +
| Field | Description |
|---|---|
apiVersionstring | kubescheduler.config.k8s.io/v1beta1 |
kindstring | NodeLabelArgs |
presentLabels [Required]+ []string
+ |
++ PresentLabels should be present for the node to be considered a fit for hosting the pod | +
absentLabels [Required]+ []string
+ |
++ AbsentLabels should be absent for the node to be considered a fit for hosting the pod | +
presentLabelsPreference [Required]+ []string
+ |
++ Nodes that have labels in the list will get a higher score. | +
absentLabelsPreference [Required]+ []string
+ |
++ Nodes that don't have labels in the list will get a higher score. | +
| Field | Description |
|---|---|
apiVersionstring | kubescheduler.config.k8s.io/v1beta1 |
kindstring | NodeResourcesFitArgs |
ignoredResources [Required]+ []string
+ |
++ IgnoredResources is the list of resources that NodeResources fit filter +should ignore. | +
ignoredResourceGroups [Required]+ []string
+ |
++ IgnoredResourceGroups defines the list of resource groups that NodeResources fit filter should ignore. +e.g. if group is ["example.com"], it will ignore all resource names that begin +with "example.com", such as "example.com/aaa" and "example.com/bbb". +A resource group name can't contain '/'. | +
| Field | Description |
|---|---|
apiVersionstring | kubescheduler.config.k8s.io/v1beta1 |
kindstring | NodeResourcesLeastAllocatedArgs |
resources [Required]+ []ResourceSpec
+ |
++ Resources to be managed, if no resource is provided, default resource set with both +the weight of "cpu" and "memory" set to "1" will be applied. +Resource with "0" weight will not accountable for the final score. | +
| Field | Description |
|---|---|
apiVersionstring | kubescheduler.config.k8s.io/v1beta1 |
kindstring | NodeResourcesMostAllocatedArgs |
resources [Required]+ []ResourceSpec
+ |
++ Resources to be managed, if no resource is provided, default resource set with both +the weight of "cpu" and "memory" set to "1" will be applied. +Resource with "0" weight will not accountable for the final score. | +
| Field | Description |
|---|---|
apiVersionstring | kubescheduler.config.k8s.io/v1beta1 |
kindstring | PodTopologySpreadArgs |
defaultConstraints+ []core/v1.TopologySpreadConstraint
+ |
++ DefaultConstraints defines topology spread constraints to be applied to +Pods that don't define any in `pod.spec.topologySpreadConstraints`. +`.defaultConstraints[∗].labelSelectors` must be empty, as they are +deduced from the Pod's membership to Services, ReplicationControllers, +ReplicaSets or StatefulSets. +When not empty, .defaultingType must be "List". | +
defaultingType+ PodTopologySpreadConstraintsDefaulting
+ |
++ DefaultingType determines how .defaultConstraints are deduced. Can be one +of "System" or "List". + +- "System": Use kubernetes defined constraints that spread Pods among + Nodes and Zones. +- "List": Use constraints defined in .defaultConstraints. + +Defaults to "List" if feature gate DefaultPodTopologySpread is disabled +and to "System" if enabled. | +
| Field | Description |
|---|---|
apiVersionstring | kubescheduler.config.k8s.io/v1beta1 |
kindstring | RequestedToCapacityRatioArgs |
shape [Required]+ []UtilizationShapePoint
+ |
++ Points defining priority function shape | +
resources [Required]+ []ResourceSpec
+ |
++ Resources to be managed | +
| Field | Description |
|---|---|
apiVersionstring | kubescheduler.config.k8s.io/v1beta1 |
kindstring | ServiceAffinityArgs |
affinityLabels [Required]+ []string
+ |
++ AffinityLabels are homogeneous for pods that are scheduled to a node. +(i.e. it returns true IFF this pod can be added to this node such that all other pods in +the same service are running on nodes with the exact same values for Labels). | +
antiAffinityLabelsPreference [Required]+ []string
+ |
++ AntiAffinityLabelsPreference are the labels to consider for service anti affinity scoring. | +
| Field | Description |
|---|---|
apiVersionstring | kubescheduler.config.k8s.io/v1beta1 |
kindstring | VolumeBindingArgs |
bindTimeoutSeconds [Required]+ int64
+ |
++ BindTimeoutSeconds is the timeout in seconds in volume binding operation. +Value must be non-negative integer. The value zero indicates no waiting. +If this value is nil, the default value (600) will be used. | +
| Field | Description |
|---|---|
urlPrefix [Required]+ string
+ |
++ URLPrefix at which the extender is available | +
filterVerb [Required]+ string
+ |
++ Verb for the filter call, empty if not supported. This verb is appended to the URLPrefix when issuing the filter call to extender. | +
preemptVerb [Required]+ string
+ |
++ Verb for the preempt call, empty if not supported. This verb is appended to the URLPrefix when issuing the preempt call to extender. | +
prioritizeVerb [Required]+ string
+ |
++ Verb for the prioritize call, empty if not supported. This verb is appended to the URLPrefix when issuing the prioritize call to extender. | +
weight [Required]+ int64
+ |
++ The numeric multiplier for the node scores that the prioritize call generates. +The weight should be a positive integer | +
bindVerb [Required]+ string
+ |
++ 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. | +
enableHTTPS [Required]+ bool
+ |
++ EnableHTTPS specifies whether https should be used to communicate with the extender | +
tlsConfig [Required]+ ExtenderTLSConfig
+ |
++ TLSConfig specifies the transport layer security config | +
httpTimeout [Required]+ meta/v1.Duration
+ |
++ 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. | +
nodeCacheCapable [Required]+ bool
+ |
++ 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 | +
managedResources+ []ExtenderManagedResource
+ |
++ 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. | +
ignorable [Required]+ bool
+ |
++ Ignorable specifies if the extender is ignorable, i.e. scheduling should not +fail when the extender returns an error or is not reachable. | +
| Field | Description |
|---|---|
schedulerName [Required]+ string
+ |
++ SchedulerName is the name of the scheduler associated to this profile. +If SchedulerName matches with the pod's "spec.schedulerName", then the pod +is scheduled with this profile. | +
plugins [Required]+ Plugins
+ |
++ Plugins specify the set of plugins that should be enabled or disabled. +Enabled plugins are the ones that should be enabled in addition to the +default plugins. Disabled plugins are any of the default plugins that +should be disabled. +When no enabled or disabled plugin is specified for an extension point, +default plugins for that extension point will be used if there is any. +If a QueueSort plugin is specified, the same QueueSort Plugin and +PluginConfig must be specified for all profiles. | +
pluginConfig [Required]+ []PluginConfig
+ |
++ PluginConfig is an optional set of custom plugin arguments for each plugin. +Omitting config args for a plugin is equivalent to using the default config +for that plugin. | +
| Field | Description |
|---|---|
name [Required]+ string
+ |
++ Name defines the name of plugin | +
weight [Required]+ int32
+ |
++ Weight defines the weight of plugin, only used for Score plugins. | +
| Field | Description |
|---|---|
name [Required]+ string
+ |
++ Name defines the name of plugin being configured | +
args [Required]+ k8s.io/apimachinery/pkg/runtime.RawExtension
+ |
++ Args defines the arguments passed to the plugins at the time of initialization. Args can have arbitrary structure. | +
| Field | Description |
|---|---|
enabled [Required]+ []Plugin
+ |
++ Enabled specifies plugins that should be enabled in addition to default plugins. +These are called after default plugins and in the same order specified here. | +
disabled [Required]+ []Plugin
+ |
++ Disabled specifies default plugins that should be disabled. +When all default plugins need to be disabled, an array containing only one "∗" should be provided. | +
| Field | Description |
|---|---|
queueSort [Required]+ PluginSet
+ |
++ QueueSort is a list of plugins that should be invoked when sorting pods in the scheduling queue. | +
preFilter [Required]+ PluginSet
+ |
++ PreFilter is a list of plugins that should be invoked at "PreFilter" extension point of the scheduling framework. | +
filter [Required]+ PluginSet
+ |
++ Filter is a list of plugins that should be invoked when filtering out nodes that cannot run the Pod. | +
postFilter [Required]+ PluginSet
+ |
++ PostFilter is a list of plugins that are invoked after filtering phase, no matter whether filtering succeeds or not. | +
preScore [Required]+ PluginSet
+ |
++ PreScore is a list of plugins that are invoked before scoring. | +
score [Required]+ PluginSet
+ |
++ Score is a list of plugins that should be invoked when ranking nodes that have passed the filtering phase. | +
reserve [Required]+ PluginSet
+ |
++ Reserve is a list of plugins invoked when reserving/unreserving resources +after a node is assigned to run the pod. | +
permit [Required]+ PluginSet
+ |
++ Permit is a list of plugins that control binding of a Pod. These plugins can prevent or delay binding of a Pod. | +
preBind [Required]+ PluginSet
+ |
++ PreBind is a list of plugins that should be invoked before a pod is bound. | +
bind [Required]+ PluginSet
+ |
++ Bind is a list of plugins that should be invoked at "Bind" extension point of the scheduling framework. +The scheduler call these plugins in order. Scheduler skips the rest of these plugins as soon as one returns success. | +
postBind [Required]+ PluginSet
+ |
++ PostBind is a list of plugins that should be invoked after a pod is successfully bound. | +
| Field | Description |
|---|---|
name [Required]+ string
+ |
++ Name of the resource to be managed by RequestedToCapacityRatio function. | +
weight [Required]+ int64
+ |
++ Weight of the resource. | +
| Field | Description |
|---|---|
utilization [Required]+ int32
+ |
++ Utilization (x axis). Valid values are 0 to 100. Fully utilized node maps to 100. | +
score [Required]+ int32
+ |
++ Score assigned to given utilization (y axis). Valid values are 0 to 10. | +