kube-scheduler 配置 (v1)

资源类型

ClientConnectionConfiguration

出现在

ClientConnectionConfiguration 包含构造客户端的详细信息。

字段描述
kubeconfig [必需]
string

kubeconfig 是 KubeConfig 文件的路径。

acceptContentTypes [必需]
string

acceptContentTypes 定义了客户端连接到服务器时发送的 Accept 头部,它将覆盖默认值 'application/json'。此字段将控制特定客户端用于连接服务器的所有连接。

contentType [必需]
string

contentType 是此客户端向服务器发送数据时使用的内容类型。

qps [必需]
float32

qps 控制此连接每秒允许的查询次数。

burst [必需]
int32

burst 允许在客户端超出其速率时累积额外的查询。

DebuggingConfiguration

出现在

DebuggingConfiguration 包含与调试相关特性的配置。

字段描述
enableProfiling [必需]
bool

enableProfiling 通过 web 接口 host:port/debug/pprof/ 启用性能分析

enableContentionProfiling [必需]
bool

如果 enableProfiling 为 true,enableContentionProfiling 将启用块分析。

LeaderElectionConfiguration

出现在

LeaderElectionConfiguration 定义了可以启用 Leader 选举运行的组件的 Leader 选举客户端配置。

字段描述
leaderElect [必需]
bool

leaderElect 使 Leader 选举客户端能够在执行主循环之前获得领导权。在运行用于高可用的复制组件时启用此选项。

leaseDuration [必需]
meta/v1.Duration

leaseDuration 是非 Leader 候选者在观察到领导权续约后,直到尝试获取已领导但未续约的 Leader 时隙的领导权之前所等待的持续时间。这实际上是一个 Leader 在被另一个候选者替换之前可以停止的最长持续时间。这仅在启用 Leader 选举时适用。

renewDeadline [必需]
meta/v1.Duration

renewDeadline 是当前主节点尝试续约领导权时隙的间隔,直到它停止领导。此值必须小于或等于租约持续时间。这仅在启用 Leader 选举时适用。

retryPeriod [必需]
meta/v1.Duration

retryPeriod 是客户端在尝试获取和续约领导权之间应该等待的持续时间。这仅在启用 Leader 选举时适用。

resourceLock [必需]
string

resourceLock 指示在 Leader 选举周期中将用于锁定的资源对象类型。

resourceName [必需]
string

resourceName 指示在 Leader 选举周期中将用于锁定的资源对象名称。

resourceNamespace [必需]
string

resourceNamespace 指示在 Leader 选举周期中将用于锁定的资源对象的命名空间。

DefaultPreemptionArgs

DefaultPreemptionArgs 包含用于配置 DefaultPreemption 插件的参数。

字段描述
apiVersion
string
kubescheduler.config.k8s.io/v1
kind
string
DefaultPreemptionArgs
minCandidateNodesPercentage [必需]
int32

MinCandidateNodesPercentage 是在空运行抢占时要入围的最小候选节点数,表示为节点数的百分比。必须在 [0, 100] 的范围内。如果未指定,默认为集群大小的 10%。

minCandidateNodesAbsolute [必需]
int32

MinCandidateNodesAbsolute 是要入围的绝对最小候选节点数。空运行抢占时枚举的可能候选节点数由以下公式给出:numCandidates = max(numNodes * minCandidateNodesPercentage, minCandidateNodesAbsolute)。我们说“可能”是因为还有其他因素,例如 PDB 违规,它们会影响入围的候选节点数。必须至少为 0 个节点。如果未指定,默认为 100 个节点。

InterPodAffinityArgs

InterPodAffinityArgs 包含用于配置 InterPodAffinity 插件的参数。

字段描述
apiVersion
string
kubescheduler.config.k8s.io/v1
kind
string
InterPodAffinityArgs
hardPodAffinityWeight [必需]
int32

HardPodAffinityWeight 是对与即将到来的 Pod 具有匹配的硬亲和性的现有 Pod 的评分权重。

ignorePreferredTermsOfExistingPods [必需]
bool

IgnorePreferredTermsOfExistingPods 配置调度器在对候选节点进行评分时忽略现有 Pod 的优先亲和性规则,除非即将到来的 Pod 具有 Pod 间亲和性。

KubeSchedulerConfiguration

KubeSchedulerConfiguration 配置调度器

字段描述
apiVersion
string
kubescheduler.config.k8s.io/v1
kind
string
KubeSchedulerConfiguration
parallelism [必需]
int32

Parallelism 定义了 Pod 调度算法中的并行度。必须大于 0。默认为 16

leaderElection [必需]
LeaderElectionConfiguration

LeaderElection 定义了 Leader 选举客户端的配置。

clientConnection [必需]
ClientConnectionConfiguration

ClientConnection 指定代理服务器与 apiserver 通信时使用的 kubeconfig 文件和客户端连接设置。

DebuggingConfiguration [必需]
DebuggingConfiguration
DebuggingConfiguration 的成员嵌入到此类型中。)

DebuggingConfiguration 包含与调试相关的特性的配置 TODO: 我们可能想将此设为一个子结构,如 Debugging componentbaseconfigv1alpha1.DebuggingConfiguration

percentageOfNodesToScore [必需]
int32

PercentageOfNodesToScore 是在找到适合运行 Pod 的可行节点后,调度器停止搜索集群中更多可行节点的节点总数的百分比。这有助于提高调度器的性能。无论此标志的值如何,调度器总是尝试找到至少 "minFeasibleNodesToFind" 个可行节点。示例:如果集群大小为 500 个节点,并且此标志的值为 30,则调度器在找到 150 个可行节点后停止寻找更多可行节点。当值为 0 时,将对默认百分比(基于集群大小,5%--50%)的节点进行评分。它将被配置文件级别的 PercentageOfNodesToScore 覆盖。

podInitialBackoffSeconds [必需]
int64

PodInitialBackoffSeconds 是不可调度 Pod 的初始指数退避时间。如果指定,必须大于 0。如果此值为 null,则将使用默认值 (1s)。

podMaxBackoffSeconds [必需]
int64

PodMaxBackoffSeconds 是不可调度 Pod 的最大指数退避时间。如果指定,必须大于 podInitialBackoffSeconds。如果此值为 null,则将使用默认值 (10s)。

profiles [必需]
[]KubeSchedulerProfile

Profiles 是 kube-scheduler 支持的调度配置文件。Pod 可以通过设置其关联的调度器名称来选择在特定配置文件下进行调度。未指定任何调度器名称的 Pod 将使用此处的“default-scheduler”配置文件进行调度(如果存在)。

extenders [必需]
[]Extender

Extenders 是调度器扩展器的列表,每个扩展器都包含如何与扩展器通信的值。这些扩展器由所有调度器配置文件共享。

delayCacheUntilActive [必需]
bool

DelayCacheUntilActive 指定何时开始缓存。如果此项为 true 且启用了 Leader 选举,调度器将等待成为 Leader 后再填充 Informer 缓存。这样做会导致故障转移变慢,但等待成为 Leader 期间的内存开销较低。默认为 false。

NodeAffinityArgs

NodeAffinityArgs 包含用于配置 NodeAffinity 插件的参数。

字段描述
apiVersion
string
kubescheduler.config.k8s.io/v1
kind
string
NodeAffinityArgs
addedAffinity
core/v1.NodeAffinity

AddedAffinity 会额外应用于所有 Pod,在 PodSpec 中指定的 NodeAffinity 之外。也就是说,节点需要满足 AddedAffinity 以及 .spec.NodeAffinity。AddedAffinity 默认为空(所有节点都匹配)。使用 AddedAffinity 时,某些具有与特定节点匹配的亲和性要求的 Pod(例如 Daemonset Pod)可能会保持不可调度状态。

NodeResourcesBalancedAllocationArgs

NodeResourcesBalancedAllocationArgs 包含用于配置 NodeResourcesBalancedAllocation 插件的参数。

字段描述
apiVersion
string
kubescheduler.config.k8s.io/v1
kind
string
NodeResourcesBalancedAllocationArgs
resources [必需]
[]ResourceSpec

要管理的资源,如果未指定,默认为 "cpu" 和 "memory"。

NodeResourcesFitArgs

NodeResourcesFitArgs 包含用于配置 NodeResourcesFit 插件的参数。

字段描述
apiVersion
string
kubescheduler.config.k8s.io/v1
kind
string
NodeResourcesFitArgs
ignoredResources [必需]
[]string

IgnoredResources 是 NodeResources fit 过滤器应忽略的资源列表。这不适用于评分。

ignoredResourceGroups [必需]
[]string

IgnoredResourceGroups 定义了 NodeResources fit 过滤器应忽略的资源组列表。例如,如果组为 ["example.com"],它将忽略所有以 "example.com" 开头的资源名称,如 "example.com/aaa" 和 "example.com/bbb"。资源组名称不能包含 '/'。这不适用于评分。

scoringStrategy [必需]
ScoringStrategy

ScoringStrategy 选择节点资源评分策略。默认策略是 LeastAllocated,具有相等的 "cpu" 和 "memory" 权重。

PodTopologySpreadArgs

PodTopologySpreadArgs 包含用于配置 PodTopologySpread 插件的参数。

字段描述
apiVersion
string
kubescheduler.config.k8s.io/v1
kind
string
PodTopologySpreadArgs
defaultConstraints
[]core/v1.TopologySpreadConstraint

DefaultConstraints 定义了应用于未在 pod.spec.topologySpreadConstraints 中定义任何约束的 Pod 的拓扑分布约束。.defaultConstraints[*].labelSelectors 必须为空,因为它们是从 Pod 对 Services、ReplicationControllers、ReplicaSets 或 StatefulSets 的成员关系中推断出来的。如果不为空,则 .defaultingType 必须为 "List"。

defaultingType
PodTopologySpreadConstraintsDefaulting

DefaultingType 决定了 .defaultConstraints 如何推导出来。可以是 "System" 或 "List" 中的一种。

  • "System":使用 Kubernetes 定义的约束,将 Pod 分布在节点和区域之间。
  • "List":使用 .defaultConstraints 中定义的约束。

默认为 "System"。

VolumeBindingArgs

VolumeBindingArgs 包含用于配置 VolumeBinding 插件的参数。

字段描述
apiVersion
string
kubescheduler.config.k8s.io/v1
kind
string
VolumeBindingArgs
bindTimeoutSeconds [必需]
int64

BindTimeoutSeconds 是卷绑定操作的超时时间(秒)。值必须是非负整数。值为零表示不等待。如果此值为 nil,将使用默认值 (600)。

shape
[]UtilizationShapePoint

Shape 指定了定义得分函数形状的点,该函数用于根据静态分配 PV 的利用率对节点进行评分。利用率是通过将 Pod 的总请求存储除以每个节点上可行 PV 的总容量计算得出的。每个点包含利用率(范围从 0 到 100)及其关联的分数(范围从 0 到 10)。您可以通过为不同的利用率数字指定不同的分数来调整优先级。默认形状点是

  1. 利用率为 0 时得分为 0
  2. 利用率为 100 时得分为 10。所有点必须按利用率升序排序。

Extender

出现在

Extender 包含用于与扩展器通信的参数。如果某个动词未指定/为空,则假定扩展器选择不提供该扩展。

字段描述
urlPrefix [必需]
string

扩展器可用的 URLPrefix

filterVerb [必需]
string

filter 调用的动词,如果不支持则为空。向扩展器发出 filter 调用时,此动词将附加到 URLPrefix。

preemptVerb [必需]
string

preempt 调用的动词,如果不支持则为空。向扩展器发出 preempt 调用时,此动词将附加到 URLPrefix。

prioritizeVerb [必需]
string

prioritize 调用的动词,如果不支持则为空。向扩展器发出 prioritize 调用时,此动词将附加到 URLPrefix。

weight [必需]
int64

prioritize 调用生成的节点分数的数字乘数。权重应为正整数

bindVerb [必需]
string

bind 调用的动词,如果不支持则为空。向扩展器发出 bind 调用时,此动词将附加到 URLPrefix。如果扩展器实现了此方法,则由扩展器负责将 pod 绑定到 apiserver。只有一个扩展器可以实现此功能。

enableHTTPS [必需]
bool

EnableHTTPS 指定是否应使用 https 与扩展器通信

tlsConfig [必需]
ExtenderTLSConfig

TLSConfig 指定传输层安全配置

httpTimeout [必需]
meta/v1.Duration

HTTPTimeout 指定对扩展器调用的超时持续时间。filter 超时会导致 Pod 调度失败。prioritize 超时将被忽略,使用 k8s/其他扩展器的优先级来选择节点。

nodeCacheCapable [必需]
bool

NodeCacheCapable 指定扩展器能够缓存节点信息,因此调度器应仅发送有关符合条件的节点的最小信息,假设扩展器已缓存集群中所有节点的完整详细信息。

managedResources
[]ExtenderManagedResource

ManagedResources 是此扩展器管理的扩展资源列表。

  • 仅当 Pod 请求此列表中至少一个扩展资源时,Pod 才会在 Filter、Prioritize 和 Bind(如果扩展器是绑定器)阶段发送到扩展器。如果为空或未指定,则所有 Pod 都将发送到此扩展器。
  • 如果某个资源的 IgnoredByScheduler 设置为 true,kube-scheduler 将在 predicates 中跳过检查该资源。
ignorable [必需]
bool

Ignorable 指定扩展器是否可忽略,即当扩展器返回错误或不可达时,调度不应失败。

ExtenderManagedResource

出现在

ExtenderManagedResource 描述由扩展器管理的扩展资源的参数。

字段描述
name [必需]
string

Name 是扩展资源的名称。

ignoredByScheduler [必需]
bool

IgnoredByScheduler 指示 kube-scheduler 在应用 predicates 时是否应忽略此资源。

ExtenderTLSConfig

出现在

ExtenderTLSConfig 包含启用与扩展器 TLS 通信的设置

字段描述
insecure [必需]
bool

访问服务器时不验证 TLS 证书。仅用于测试。

serverName [必需]
string

ServerName 传递给服务器用于 SNI,并在客户端用于检查服务器证书。如果 ServerName 为空,则使用用于联系服务器的主机名。

certFile [必需]
string

服务器需要 TLS 客户端证书认证

keyFile [必需]
string

服务器需要 TLS 客户端证书认证

caFile [必需]
string

服务器的可信根证书

certData [必需]
[]byte

CertData 包含 PEM 编码的字节(通常从客户端证书文件中读取)。CertData 优先于 CertFile

keyData [必需]
[]byte

KeyData 包含 PEM 编码的字节(通常从客户端证书密钥文件中读取)。KeyData 优先于 KeyFile

caData [必需]
[]byte

CAData 包含 PEM 编码的字节(通常从根证书包中读取)。CAData 优先于 CAFile

KubeSchedulerProfile

出现在

KubeSchedulerProfile 是一个调度配置文件。

字段描述
schedulerName [必需]
string

SchedulerName 是与此配置文件关联的调度器名称。如果 SchedulerName 与 Pod 的 "spec.schedulerName" 匹配,则 Pod 将使用此配置文件进行调度。

percentageOfNodesToScore [必需]
int32

PercentageOfNodesToScore 是在找到适合运行 Pod 的可行节点后,调度器停止搜索集群中更多可行节点的节点总数的百分比。这有助于提高调度器的性能。无论此标志的值如何,调度器总是尝试找到至少 "minFeasibleNodesToFind" 个可行节点。示例:如果集群大小为 500 个节点,并且此标志的值为 30,则调度器在找到 150 个可行节点后停止寻找更多可行节点。当值为 0 时,将对默认百分比(基于集群大小,5%--50%)的节点进行评分。它将覆盖全局 PercentageOfNodesToScore。如果为空,将使用全局 PercentageOfNodesToScore。

plugins [必需]
Plugins

Plugins 指定应启用或禁用的一组插件。启用的插件是除默认插件外应启用的插件。禁用的插件是任何应禁用的默认插件。如果未为扩展点指定任何启用或禁用的插件,则将使用该扩展点的默认插件(如果存在)。如果指定了 QueueSort 插件,则必须为所有配置文件指定相同的 QueueSort Plugin 和 PluginConfig。

pluginConfig [必需]
[]PluginConfig

PluginConfig 是每个插件的可选自定义插件参数集。省略插件的配置参数等同于使用该插件的默认配置。

Plugin

出现在

Plugin 指定插件名称及其(如果适用)权重。权重仅用于 Score 插件。

字段描述
name [必需]
string

Name 定义插件的名称

weight [必需]
int32

Weight 定义插件的权重,仅用于 Score 插件。

PluginConfig

出现在

PluginConfig 指定初始化时应传递给插件的参数。在多个扩展点调用的插件只初始化一次。Args 可以具有任意结构。由插件自行处理这些 Args。

字段描述
name [必需]
string

Name 定义要配置的插件名称

args [必需]
k8s.io/apimachinery/pkg/runtime.RawExtension

Args 定义初始化时传递给插件的参数。Args 可以具有任意结构。

PluginSet

出现在

PluginSet 指定扩展点上启用和禁用的插件。如果数组为空、缺失或 nil,则将使用该扩展点的默认插件。

字段描述
enabled [必需]
[]Plugin

Enabled 指定除默认插件外应启用的插件。如果默认插件也在调度器配置文件中配置,则插件权重将相应地被覆盖。这些插件在默认插件之后调用,并按此处指定的顺序调用。

disabled [必需]
[]Plugin

Disabled 指定应禁用的默认插件。当需要禁用所有默认插件时,应提供仅包含一个 "*" 的数组。

Plugins

出现在

Plugins 包含多个扩展点。指定时,特定扩展点的插件列表是唯一启用的插件。如果配置中省略了某个扩展点,则将使用该扩展点的默认插件集。启用的插件按此处指定的顺序在默认插件之后调用。如果需要在默认插件之前调用它们,则必须在此处按所需顺序禁用默认插件并重新启用。

字段描述
preEnqueue [必需]
PluginSet

PreEnqueue 是在将 Pod 添加到调度队列之前应调用的插件列表。

queueSort [必需]
PluginSet

QueueSort 是在对调度队列中的 Pod 进行排序时应调用的插件列表。

preFilter [必需]
PluginSet

PreFilter 是在调度框架的“PreFilter”扩展点应调用的插件列表。

filter [必需]
PluginSet

Filter 是在过滤掉无法运行 Pod 的节点时应调用的插件列表。

postFilter [必需]
PluginSet

PostFilter 是在过滤阶段之后调用的插件列表,但仅当未找到适合 Pod 的可行节点时才调用。

preScore [必需]
PluginSet

PreScore 是在评分之前调用的插件列表。

score [必需]
PluginSet

Score 是在对通过过滤阶段的节点进行排名时应调用的插件列表。

reserve [必需]
PluginSet

Reserve 是在将 Pod 分配给节点运行后保留/释放资源时调用的插件列表。

permit [必需]
PluginSet

Permit 是控制 Pod 绑定的插件列表。这些插件可以阻止或延迟 Pod 的绑定。

preBind [必需]
PluginSet

PreBind 是在 Pod 绑定之前应调用的插件列表。

bind [必需]
PluginSet

Bind 是在调度框架的“Bind”扩展点应调用的插件列表。调度器按顺序调用这些插件。一旦其中一个返回成功,调度器将跳过其余插件。

postBind [必需]
PluginSet

PostBind 是在 Pod 成功绑定后应调用的插件列表。

multiPoint [必需]
PluginSet

MultiPoint 是一个简化的配置部分,用于为所有有效扩展点启用插件。通过 MultiPoint 启用的插件将自动注册到该插件已实现的每个单独扩展点。通过 MultiPoint 禁用插件会禁用该行为。通过 MultiPoint 禁用 "*" 也是如此(不会自动注册任何默认插件)。插件仍然可以通过其单独的扩展点禁用。

在优先级方面,插件配置遵循以下基本层次结构

  1. 特定扩展点
  2. 显式配置的 MultiPoint 插件
  3. 默认插件集,作为 MultiPoint 插件。这意味着优先级更高的插件将首先运行并覆盖 MultiPoint 中的任何设置。显式用户配置的插件也比默认插件具有更高的优先级。在此层次结构中,Enabled 设置优先于 Disabled。例如,如果插件同时在 multiPoint.EnabledmultiPoint.Disabled 中设置,则该插件将被启用。类似地,包含 multiPoint.Disabled = '*'multiPoint.Enabled = pluginA 仍然会通过 MultiPoint 注册该特定插件。这与其他所有扩展点配置的行为一致。

PodTopologySpreadConstraintsDefaulting

(别名 string

出现在

PodTopologySpreadConstraintsDefaulting 定义了如何为 PodTopologySpread 插件设置默认约束。

RequestedToCapacityRatioParam

出现在

RequestedToCapacityRatioParam 定义 RequestedToCapacityRatio 参数

字段描述
shape [必需]
[]UtilizationShapePoint

Shape 是定义评分函数形状的点列表。

ResourceSpec

出现在

ResourceSpec 表示单个资源。

字段描述
name [必需]
string

资源名称。

weight [必需]
int64

资源的权重。

ScoringStrategy

出现在

ScoringStrategy 定义节点资源插件的 ScoringStrategyType

字段描述
type [必需]
ScoringStrategyType

Type 选择要运行的策略。

resources [必需]
[]ResourceSpec

评分时要考虑的资源。默认资源集包括权重相等的 "cpu" 和 "memory"。允许的权重范围是 1 到 100。如果未指定或显式设置为 0,权重默认为 1。

requestedToCapacityRatio [必需]
RequestedToCapacityRatioParam

RequestedToCapacityRatio 策略特有的参数。

ScoringStrategyType

(别名 string

出现在

ScoringStrategyType 是 NodeResourcesFit 插件中使用的评分策略类型。

UtilizationShapePoint

出现在

UtilizationShapePoint 表示优先级函数形状的单个点。

字段描述
utilization [必需]
int32

利用率(x 轴)。有效值为 0 到 100。完全利用的节点对应 100。

score [必需]
int32

分配给给定利用率的分数(y 轴)。有效值为 0 到 10。

此页面是自动生成的。

如果您打算报告此页面的问题,请在您的问题描述中提及此页面是自动生成的。修复可能需要在 Kubernetes 项目的其他地方进行。

最后修改于 2024 年 12 月 12 日下午 5:37 PST:更新 v1.32 的配置 API (2914668152)