kube-scheduler 配置 (v1beta2)

    ClientConnectionConfiguration

    ClientConnectionConfiguration 中包含用来构造客户端所需的细节。

    DebuggingConfiguration

    出现在:

    DebuggingConfiguration 保存与调试功能相关的配置。

    字段描述
    enableProfiling [必需]
    bool

    此字段允许通过 Web 接口 host:port/debug/pprof/ 执行性能分析。

    enableContentionProfiling [必需]
    bool

    此字段在 enableProfiling 为 true 时允许执行锁竞争分析。

    FormatOptions

    FormatOptions 中包含不同日志格式的配置选项。

    字段描述
    json [必需]

    [实验特性] json 字段包含为 “json” 日志格式提供的配置选项。

    JSONOptions

    出现在:

    JSONOptions 包含为 “json” 日志格式所设置的配置选项。

    字段描述
    splitStream [必需]
    bool

    [实验特性] 此字段将错误信息重定向到标准错误输出(stderr), 将提示消息重定向到标准输出(stdout),并且支持缓存。 默认配置为将二者都输出到标准输出(stdout),且不提供缓存。

    infoBufferSize [必需]
    k8s.io/apimachinery/pkg/api/resource.QuantityValue

    [实验特性] infoBufferSize 用来在分离数据流场景是设置提示信息数据流的大小。 默认值为 0,意味着禁止缓存。

    LeaderElectionConfiguration

    出现在:

    LeaderElectionConfiguration 为能够支持领导者选举的组件定义其领导者选举客户端的配置。

    字段描述
    leaderElect [必需]
    bool

    leaderElect 允许领导者选举客户端在进入主循环执行之前先获得领导者角色。 运行多副本组件时启用此功能有助于提高可用性。

    leaseDuration [必需]

    leaseDuration 是非领导角色候选者在观察到需要领导席位更新时要等待的时间; 只有经过所设置时长才可以尝试去获得一个仍处于领导状态但需要被刷新的席位。 这里的设置值本质上意味着某个领导者在被另一个候选者替换掉之前可以停止运行的最长时长。 只有当启用了领导者选举时此字段有意义。

    renewDeadline [必需]
    meta/v1.Duration

    renewDeadline 设置的是当前领导者在停止扮演领导角色之前需要刷新领导状态的时间间隔。 此值必须小于或等于租约期限的长度。只有到启用了领导者选举时此字段才有意义。

    retryPeriod [必需]

    retryPeriod 是客户端在连续两次尝试获得或者刷新领导状态之间需要等待的时长。 只有当启用了领导者选举时此字段才有意义。

    resourceLock [必需]
    string

    此字段给出在领导者选举期间要作为锁来使用的资源对象类型。

    resourceName [必需]
    string

    此字段给出在领导者选举期间要作为锁来使用的资源对象名称。

    resourceNamespace [必需]
    string

    此字段给出在领导者选举期间要作为锁来使用的资源对象所在名字空间。

    LoggingConfiguration

    出现在:

    LoggingConfiguration 包含日志选项。 参考 [Logs Options](https://github.com/kubernetes/component-base/blob/master/logs/options.go) 以了解更多信息。

    字段描述
    format [必需]
    string

    format 设置日志消息的结构。默认的格式取值为 text

    flushFrequency [必需]

    对日志进行清洗的最大间隔纳秒数(例如,1s = 1000000000)。 如果所选的日志后端在写入日志消息时不提供缓存,则此配置会被忽略。

    verbosity [必需]
    uint32

    verbosity 用来确定日志消息记录的详细程度阈值。默认值为 0, 意味着仅记录最重要的消息。数值越大,额外的消息越多。错误消息总是被记录下来。

    vmodule [必需]
    VModuleConfiguration

    vmodule 会在单个文件层面重载 verbosity 阈值的设置。 这一选项仅支持 “text” 日志格式。

    options [Required]

    [实验特性] options 中包含特定于不同日志格式的配置参数。 只有针对所选格式的选项会被使用,但是合法性检查时会查看所有选项配置。

    VModuleConfiguration

    []k8s.io/component-base/config/v1alpha1.VModuleItem 的别名)

    出现在:

    VModuleConfiguration 是一组文件名(通配符)及其对应的日志详尽程度阈值。

    DefaultPreemptionArgs

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

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

    此字段为试运行抢占时 shortlist 中候选节点数的下限,数值为节点数的百分比。 字段值必须介于 [0, 100] 之间。未指定时默认值为整个集群规模的 10%。

    minCandidateNodesAbsolute [必需]
    int32

    此字段设置 shortlist 中候选节点的绝对下限。用于试运行抢占而列举的候选节点个数近似于通过下面的公式计算的:

    候选节点数 = max(节点数 * minCandidateNodesPercentage, minCandidateNodesAbsolute)

    之所以说是”近似于”是因为存在一些类似于 PDB 违例这种因素,会影响到进入 shortlist中候选节点的个数。 取值至少为 0 节点。若未设置默认为 100 节点。

    InterPodAffinityArgs

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

    字段描述
    apiVersion
    string
    kubescheduler.config.k8s.io/v1beta2

    string
    InterPodAffinityArgs
    hardPodAffinityWeight [必需]
    int32

    此字段是一个计分权重值。针对新增的 Pod, 要对现存的、带有与新 Pod 匹配的硬性亲和性设置的 Pod 计算亲和性得分。

    KubeSchedulerConfiguration 用来配置调度器。

    NodeAffinityArgs

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

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

    addedAffinity 会作为附加的亲和性属性添加到所有 Pod 的规约中指定的 NodeAffinity 中。 换言之,节点需要同时满足 addedAffinity 和 .spec.nodeAffinity。默认情况下,addedAffinity 为空(与所有节点匹配)。 使用了 addedAffinity 时,某些带有已经能够与某特定节点匹配的亲和性需求的 Pod (例如 DaemonSet Pod)可能会继续呈现不可调度状态。

    NodeResourcesBalancedAllocationArgs

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

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

    要管理的资源;如果未设置,则默认值为 “cpu” 和 “memory”。

    NodeResourcesFitArgs

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

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

    此字段为 NodeResources 匹配过滤器要忽略的资源列表。此列表不影响节点打分。

    ignoredResourceGroups [必需]
    []string

    此字段定义 NodeResources 匹配过滤器要忽略的资源组列表。 例如,如果配置值为 [“example.com”],则以 “example.com” 开头的资源名(如”example.com/aaa” 和 “example.com/bbb”)都会被忽略。 资源组名称中不可以包含 ‘/‘。此设置不影响节点的打分。

    scoringStrategy [必需]
    ScoringStrategy

    此字段用来选择节点资源打分策略。默认的策略为 LeastAllocated, 且 “cpu” 和”memory” 的权重相同。

    PodTopologySpreadArgs

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

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

    此字段针对未定义 .spec.topologySpreadConstraints 的 Pod, 为其提供拓扑分布约束。.defaultConstraints[∗].labelSelectors必须为空, 因为这一信息要从 Pod 所属的 Service、ReplicationController、 ReplicaSet 或 StatefulSet 来推导。 此字段不为空时,.defaultingType 必须为 “List”。

    defaultingType

    defaultingType 决定如何推导 .defaultConstraints。 可选值为 “System” 或 “List”。

    • “System”:使用 Kubernetes 定义的约束,将 Pod 分布到不同节点和可用区;
    • “List”:使用 .defaultConstraints 中定义的约束。

    当特性门控 DefaultPodTopologySpread 被禁用时,默认值为 “list”;反之,默认值为 “System”。

    VolumeBindingArgs

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

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

    此字段设置卷绑定操作的超时秒数。字段值必须是非负数。 取值为 0 意味着不等待。如果此值为 null,则使用默认值(600)。

    shape

    shape 用来设置打分函数曲线所使用的计分点, 这些计分点用来基于静态制备的 PV 卷的利用率为节点打分。 卷的利用率是计算得来的,将 Pod 所请求的总的存储空间大小除以每个节点上可用的总的卷容量。 每个计分点包含利用率(范围从 0 到 100)和其对应的得分(范围从 0 到 10)。 你可以通过为不同的使用率值设置不同的得分来反转优先级:

    默认的曲线计分点为:

    1. 利用率为 0 时得分为 0;
    2. 利用率为 100 时得分为 10。

    所有计分点必须按利用率值的升序来排序。

    Extender

    出现在:

    Extender 包含与扩展模块(Extender)通信所用的参数。 如果未指定 verb 或者 verb 为空,则假定对应的扩展模块选择不提供该扩展功能。

    字段描述
    urlPrefix [必需]
    string

    用来访问扩展模块的 URL 前缀。

    filterVerb [必需]
    string

    filter 调用所使用的动词,如果不支持过滤操作则为空。 此动词会在向扩展模块发送 filter 调用时追加到 urlPrefix 后面。

    preemptVerb [必需]
    string

    preempt 调用所使用的动词,如果不支持抢占操作则为空。 此动词会在向扩展模块发送 preempt 调用时追加到 urlPrefix 后面。

    prioritizeVerb [必需]
    string

    prioritize 调用所使用的动词,如果不支持 prioritize 操作则为空。 此动词会在向扩展模块发送 prioritize 调用时追加到 urlPrefix 后面。

    weight [必需]
    int64

    针对 prioritize 调用所生成的节点分数要使用的数值系数。 weight 值必须是正整数。

    bindVerb [必需]
    string

    bind 调用所使用的动词,如果不支持 bind 操作则为空。 此动词会在向扩展模块发送 bind 调用时追加到 urlPrefix 后面。 如果扩展模块实现了此方法,扩展模块要负责将 Pod 绑定到 API 服务器。 只有一个扩展模块可以实现此函数。

    enableHTTPS [必需]
    bool

    此字段设置是否需要使用 HTTPS 来与扩展模块通信。

    tlsConfig [必需]
    ExtenderTLSConfig

    此字段设置传输层安全性(TLS)配置。

    httpTimeout [必需]

    此字段给出扩展模块功能调用的超时值。filter 操作超时会导致 Pod 无法被调度。 prioritize 操作超时会被忽略,Kubernetes 或者其他扩展模块所给出的优先级值会被用来选择节点。

    nodeCacheCapable [必需]
    bool

    此字段指示扩展模块可以缓存节点信息,从而调度器应该发送关于可选节点的最少信息, 假定扩展模块已经缓存了集群中所有节点的全部详细信息。

    managedResources
    []ExtenderManagedResource

    managedResources 是一个由此扩展模块所管理的扩展资源的列表。

    • 如果某 Pod 请求了此列表中的至少一个扩展资源,则 Pod 会在 filter、 prioritize 和 bind (如果扩展模块可以执行绑定操作)阶段被发送到该扩展模块。 若此字段为空或未设置,则所有 Pod 都会发送到此扩展模块。
    • 如果某资源上设置了 ignoredByScheduler 为 true,则 kube-scheduler 会在断言阶段略过对该资源的检查。
    ignorable [必需]
    bool

    此字段用来设置扩展模块是否是可忽略的。 换言之,当扩展模块返回错误或者完全不可达时,调度操作不应失败。

    ExtenderManagedResource

    出现在:

    ExtenderManagedResource 描述某扩展模块所管理的扩展资源的参数。

    字段描述
    [必需]
    string

    扩展资源的名称。

    ignoredByScheduler [必需]
    bool

    此字段标明 kube-scheduler 是否应在应用断言时忽略此资源。

    ExtenderTLSConfig

    出现在:

    ExtenderTLSConfig 包含启用与扩展模块间 TLS 传输所需的配置参数。

    KubeSchedulerProfile

    出现在:

    KubeSchedulerProfile 是一个调度方案。

    字段描述
    schedulerName [必需]
    string

    schedulerName 是与此调度方案相关联的调度器的名称。 如果 schedulerName 与 Pod 的 spec.schedulerName 匹配,则该 Pod 会使用此方案来调度。

    plugins [必需]

    plugins 设置一组应该被启用或禁止的插件。 被启用的插件是指除了默认插件之外需要被启用的插件。 被禁止的插件是指需要被禁用的默认插件。

    pluginConfig [必需]
    []PluginConfig

    pluginConfig 是为每个插件提供的一组可选的定制插件参数。 如果忽略了插件的配置参数,则意味着使用该插件的默认配置。

    出现在:

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

    字段描述
    name [必需]
    string

    插件的名称。

    weight [必需]
    int32

    插件的权重;仅适用于评分(Score)插件。

    PluginConfig

    出现在:

    PluginConfig 给出初始化阶段要传递给插件的参数。 在多个扩展点被调用的插件仅会被初始化一次。 参数可以是任意结构。插件负责处理这里所传的参数。

    字段描述
    name [必需]
    string

    name 是所配置的插件的名称。

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

    args 定义在初始化阶段要传递给插件的参数。参数可以为任意结构。

    PluginSet

    出现在:

    PluginSet 为某扩展点设置要启用或禁用的插件。 如果数组为空,或者取值为 null,则使用该扩展点的默认插件集合。

    字段描述
    enabled [必需]

    enabled 设置在默认插件之外要启用的插件。 如果在调度器的配置文件中也配置了默认插件,则对应插件的权重会被覆盖。 此处所设置的插件会在默认插件之后被调用,调用顺序与数组中元素顺序相同。

    disabled [必需]
    []Plugin

    disabled 设置要被禁用的默认插件。 如果需要禁用所有的默认插件,应该提供仅包含一个元素 “∗” 的数组。

    Plugins

    出现在:

    Plugins 结构中包含多个扩展点。当此结构被设置时,针对特定扩展点所启用的所有插件都在这一列表中。 如果配置中不包含某个扩展点,则使用该扩展点的默认插件集合。 被启用的插件的调用顺序与这里指定的顺序相同,都在默认插件之后调用。 如果它们需要在默认插件之前调用,则需要先行禁止默认插件,之后在这里按期望的顺序重新启用。

    字段描述
    queueSort [必需]

    queueSort 是一个在对调度队列中 Pod 排序时要调用的插件列表。

    preFilter [必需]
    PluginSet

    preFilter 是一个在调度框架中“PreFilter(预过滤)”扩展点上要调用的插件列表。

    filter [必需]

    filter 是一个在需要过滤掉无法运行 Pod 的节点时被调用的插件列表。

    postFilter [必需]
    PluginSet

    postFilter 是一个在过滤阶段结束后会被调用的插件列表; 这里的插件只有在找不到合适的节点来运行 Pod 时才会被调用。

    preScore [必需]

    preScore 是一个在打分之前要调用的插件列表。

    score [必需]
    PluginSet

    score 是一个在对已经通过过滤阶段的节点进行排序时调用的插件的列表。

    reserve [必需]

    reserve 是一组在运行 Pod 的节点已被选定后,需要预留或者释放资源时调用的插件的列表。

    permit [必需]
    PluginSet

    permit 是一个用来控制 Pod 绑定关系的插件列表。 这些插件可以禁止或者延迟 Pod 的绑定。

    preBind [必需]

    preBind 是一个在 Pod 被绑定到某节点之前要被调用的插件的列表。

    bind [必需]
    PluginSet

    bind 是一个在调度框架中”Bind(绑定)”扩展点上要调用的插件的列表。 调度器按顺序调用这些插件。只要其中某个插件返回成功,则调度器就略过余下的插件。

    postBind [必需]

    postBind 是一个在 Pod 已经被成功绑定之后要调用的插件的列表。

    multiPoint [必需]
    PluginSet

    multiPoint 是一个简化的配置段落,用来为所有合法的扩展点启用插件。

    PodTopologySpreadConstraintsDefaulting

    string 类型的别名)

    出现在:

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

    RequestedToCapacityRatioParam

    出现在:

    RequestedToCapacityRatioParam 结构定义 RequestedToCapacityRatio 的参数。

    字段描述
    shape [必需]

    shape 是一个定义评分函数曲线的计分点的列表。

    ResourceSpec

    出现在:

    ResourceSpec 用来代表某个资源。

    字段描述
    name [必需]
    string

    资源名称。

    weight [必需]
    int64

    资源权重。

    ScoringStrategy

    出现在:

    ScoringStrategy 为节点资源插件定义 ScoringStrategyType。

    ScoringStrategyType

    string 数据类型的别名)

    出现在:

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

    UtilizationShapePoint

    出现在:

    UtilizationShapePoint 代表的是优先级函数曲线中的一个评分点。

    字段描述
    utilization [必需]
    int32

    利用率(x 轴)。合法值为 0 到 100。完全被利用的节点映射到 100。

    score [必需]
    int32