Merge pull request #35331 from windsonsea/kubeyhf

[zh-cn] resync /scheduling-eviction/kube-scheduler.md
This commit is contained in:
Kubernetes Prow Robot
2022-07-25 01:00:34 -07:00
committed by GitHub
2 changed files with 43 additions and 37 deletions
@@ -64,8 +64,6 @@ of terminating one or more Pods on Nodes.
<!-- <!--
## Pod Disruption ## Pod Disruption
{{<glossary_definition term_id="pod-disruption" length="all">}}
* [Pod Priority and Preemption](/docs/concepts/scheduling-eviction/pod-priority-preemption/) * [Pod Priority and Preemption](/docs/concepts/scheduling-eviction/pod-priority-preemption/)
* [Node-pressure Eviction](/docs/concepts/scheduling-eviction/node-pressure-eviction/) * [Node-pressure Eviction](/docs/concepts/scheduling-eviction/node-pressure-eviction/)
* [API-initiated Eviction](/docs/concepts/scheduling-eviction/api-eviction/) * [API-initiated Eviction](/docs/concepts/scheduling-eviction/api-eviction/)
@@ -16,9 +16,9 @@ In Kubernetes, _scheduling_ refers to making sure that {{< glossary_tooltip text
are matched to {{< glossary_tooltip text="Nodes" term_id="node" >}} so that are matched to {{< glossary_tooltip text="Nodes" term_id="node" >}} so that
{{< glossary_tooltip term_id="kubelet" >}} can run them. {{< glossary_tooltip term_id="kubelet" >}} can run them.
--> -->
在 Kubernetes 中,_调度_ 是指将 {{< glossary_tooltip text="Pod" term_id="pod" >}} 放置到合适的 在 Kubernetes 中,**调度** 是指将 {{< glossary_tooltip text="Pod" term_id="pod" >}}
{{< glossary_tooltip text="Node" term_id="node" >}} 上,然后对应 Node 上的 放置到合适的{{< glossary_tooltip text="节点" term_id="node" >}}上,以便对应节点上的
{{< glossary_tooltip term_id="kubelet" >}} 能够运行这些 pod。 {{< glossary_tooltip term_id="kubelet" >}} 能够运行这些 Pod。
<!-- body --> <!-- body -->
<!-- <!--
@@ -33,8 +33,8 @@ for finding the best Node for that Pod to run on. The scheduler reaches
this placement decision taking into account the scheduling principles this placement decision taking into account the scheduling principles
described below. described below.
--> -->
调度器通过 kubernetes 的监测(Watch)机制来发现集群中新创建且尚未被调度到 Node 上的 Pod。 调度器通过 Kubernetes 的监测(Watch)机制来发现集群中新创建且尚未被调度到节点上的 Pod。
调度器会将发现的每一个未调度的 Pod 调度到一个合适的 Node 上来运行。 调度器会将发现的每一个未调度的 Pod 调度到一个合适的节点上来运行。
调度器会依据下文的调度原则来做出调度选择。 调度器会依据下文的调度原则来做出调度选择。
<!-- <!--
@@ -42,8 +42,8 @@ If you want to understand why Pods are placed onto a particular Node,
or if you're planning to implement a custom scheduler yourself, this or if you're planning to implement a custom scheduler yourself, this
page will help you learn about scheduling. page will help you learn about scheduling.
--> -->
如果你想要理解 Pod 为什么会被调度到特定的 Node 上,或者你想要尝试实现 如果你想要理解 Pod 为什么会被调度到特定的节点上,
一个自定义的调度器,这篇文章将帮助你了解调度。 或者你想要尝试实现一个自定义的调度器,这篇文章将帮助你了解调度。
<!-- <!--
## kube-scheduler ## kube-scheduler
@@ -60,8 +60,8 @@ write your own scheduling component and use that instead.
[kube-scheduler](/zh-cn/docs/reference/command-line-tools-reference/kube-scheduler/) [kube-scheduler](/zh-cn/docs/reference/command-line-tools-reference/kube-scheduler/)
是 Kubernetes 集群的默认调度器,并且是集群 是 Kubernetes 集群的默认调度器,并且是集群
{{< glossary_tooltip text="控制面" term_id="control-plane" >}} 的一部分。 {{< glossary_tooltip text="控制面" term_id="control-plane" >}} 的一部分。
如果你真希望或者有这方面的需求,kube-scheduler 在设计上是允许 如果你真希望或者有这方面的需求,kube-scheduler
你自己写一个调度组件并替换原有的 kube-scheduler。 在设计上允许你自己写一个调度组件并替换原有的 kube-scheduler。
<!-- <!--
For every newly created pods or other unscheduled pods, kube-scheduler For every newly created pods or other unscheduled pods, kube-scheduler
@@ -70,19 +70,19 @@ pods has different requirements for resources and every pod also has
different requirements. Therefore, existing nodes need to be filtered different requirements. Therefore, existing nodes need to be filtered
according to the specific scheduling requirements. according to the specific scheduling requirements.
--> -->
对每一个新创建的 Pod 或者是未被调度的 Podkube-scheduler 会选择一个最优的 对每一个新创建的 Pod 或者是未被调度的 Podkube-scheduler 会选择一个最优的节点去运行这个 Pod。
Node 去运行这个 Pod。然而,Pod 内的每一个容器对资源都有不同的需求,而且 然而,Pod 内的每一个容器对资源都有不同的需求,
Pod 本身也有不同的资源需求。因此,Pod 在被调度到 Node 上之前, 而且 Pod 本身也有不同的需求。因此,Pod 在被调度到节点上之前,
根据这些特定的资源调度需求,需要对集群中的 Node 进行一次过滤。 根据这些特定的调度需求,需要对集群中的节点进行一次过滤。
<!-- <!--
In a cluster, Nodes that meet the scheduling requirements for a Pod In a cluster, Nodes that meet the scheduling requirements for a Pod
are called _feasible_ nodes. If none of the nodes are suitable, the pod are called _feasible_ nodes. If none of the nodes are suitable, the pod
remains unscheduled until the scheduler is able to place it. remains unscheduled until the scheduler is able to place it.
--> -->
在一个集群中,满足一个 Pod 调度请求的所有 Node 称之为 _可调度节点_ 在一个集群中,满足一个 Pod 调度请求的所有节点称之为 **可调度节点**
如果没有任何一个 Node 能满足 Pod 的资源请求,那么这个 Pod 将一直停留在 如果没有任何一个节点能满足 Pod 的资源请求,
未调度状态直到调度器能够找到合适的 Node。 那么这个 Pod 将一直停留在未调度状态直到调度器能够找到合适的 Node。
<!-- <!--
The scheduler finds feasible Nodes for a Pod and then runs a set of The scheduler finds feasible Nodes for a Pod and then runs a set of
@@ -91,8 +91,8 @@ score among the feasible ones to run the Pod. The scheduler then notifies
the API server about this decision in a process called _binding_. the API server about this decision in a process called _binding_.
--> -->
调度器先在集群中找到一个 Pod 的所有可调度节点,然后根据一系列函数对这些可调度节点打分, 调度器先在集群中找到一个 Pod 的所有可调度节点,然后根据一系列函数对这些可调度节点打分,
选出其中得分最高的 Node 来运行 Pod。之后,调度器将这个调度决定通知给 选出其中得分最高的节点来运行 Pod。之后,调度器将这个调度决定通知给
kube-apiserver,这个过程叫做 _绑定_ kube-apiserver,这个过程叫做 **绑定**
<!-- <!--
Factors that need to be taken into account for scheduling decisions include Factors that need to be taken into account for scheduling decisions include
@@ -114,7 +114,7 @@ kube-scheduler selects a node for the pod in a 2-step operation:
1. Filtering 1. Filtering
2. Scoring 2. Scoring
--> -->
kube-scheduler 给一个 pod 做调度选择包含两个步骤: kube-scheduler 给一个 Pod 做调度选择包含两个步骤:
1. 过滤 1. 过滤
2. 打分 2. 打分
@@ -127,17 +127,17 @@ resource requests. After this step, the node list contains any suitable
Nodes; often, there will be more than one. If the list is empty, that Nodes; often, there will be more than one. If the list is empty, that
Pod isn't (yet) schedulable. Pod isn't (yet) schedulable.
--> -->
过滤阶段会将所有满足 Pod 调度需求的 Node 选出来。 过滤阶段会将所有满足 Pod 调度需求的节点选出来。
例如,PodFitsResources 过滤函数会检查候选 Node 的可用资源能否满足 Pod 的资源请求。 例如,PodFitsResources 过滤函数会检查候选节点的可用资源能否满足 Pod 的资源请求。
在过滤之后,得出一个 Node 列表,里面包含了所有可调度节点;通常情况下, 在过滤之后,得出一个节点列表,里面包含了所有可调度节点;通常情况下,
这个 Node 列表包含不止一个 Node。如果这个列表是空的,代表这个 Pod 不可调度。 这个节点列表包含不止一个节点。如果这个列表是空的,代表这个 Pod 不可调度。
<!-- <!--
In the _scoring_ step, the scheduler ranks the remaining nodes to choose In the _scoring_ step, the scheduler ranks the remaining nodes to choose
the most suitable Pod placement. The scheduler assigns a score to each Node the most suitable Pod placement. The scheduler assigns a score to each Node
that survived filtering, basing this score on the active scoring rules. that survived filtering, basing this score on the active scoring rules.
--> -->
在打分阶段,调度器会为 Pod 从所有可调度节点中选取一个最合适的 Node 在打分阶段,调度器会为 Pod 从所有可调度节点中选取一个最合适的节点
根据当前启用的打分规则,调度器会给每一个可调度节点进行打分。 根据当前启用的打分规则,调度器会给每一个可调度节点进行打分。
<!-- <!--
@@ -145,8 +145,8 @@ Finally, kube-scheduler assigns the Pod to the Node with the highest ranking.
If there is more than one node with equal scores, kube-scheduler selects If there is more than one node with equal scores, kube-scheduler selects
one of these at random. one of these at random.
--> -->
最后,kube-scheduler 会将 Pod 调度到得分最高的 Node 上。 最后,kube-scheduler 会将 Pod 调度到得分最高的节点上。
如果存在多个得分最高的 Nodekube-scheduler 会从中随机选取一个。 如果存在多个得分最高的节点kube-scheduler 会从中随机选取一个。
<!-- <!--
There are two supported ways to configure the filtering and scoring behavior There are two supported ways to configure the filtering and scoring behavior
@@ -162,10 +162,10 @@ of the scheduler:
`QueueSort`, `Filter`, `Score`, `Bind`, `Reserve`, `Permit`, and others. You `QueueSort`, `Filter`, `Score`, `Bind`, `Reserve`, `Permit`, and others. You
can also configure the kube-scheduler to run different profiles. can also configure the kube-scheduler to run different profiles.
--> -->
1. [调度策略](/zh-cn/docs/reference/scheduling/policies) 允许你配置过滤的 _断言(Predicates)_ 1. [调度策略](/zh-cn/docs/reference/scheduling/policies)
和打分的 _优先级(Priorities)_ 允许你配置过滤所用的 **断言(Predicates** 和打分所用的 **优先级Priorities**
2. [调度配置](/zh-cn/docs/reference/scheduling/config/#profiles) 允许你配置实现不同调度阶段的插件, 2. [调度配置](/zh-cn/docs/reference/scheduling/config/#profiles) 允许你配置实现不同调度阶段的插件,
包括:`QueueSort`, `Filter`, `Score`, `Bind`, `Reserve`, `Permit` 等等。 包括:`QueueSort``Filter``Score``Bind``Reserve``Permit` 等等。
你也可以配置 kube-scheduler 运行不同的配置文件。 你也可以配置 kube-scheduler 运行不同的配置文件。
## {{% heading "whatsnext" %}} ## {{% heading "whatsnext" %}}
@@ -177,11 +177,19 @@ of the scheduler:
* Learn about [configuring multiple schedulers](/docs/tasks/extend-kubernetes/configure-multiple-schedulers/) * 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 [topology management policies](/docs/tasks/administer-cluster/topology-manager/)
* Learn about [Pod Overhead](/docs/concepts/scheduling-eviction/pod-overhead/) * Learn about [Pod Overhead](/docs/concepts/scheduling-eviction/pod-overhead/)
* Learn about scheduling of Pods that use volumes in:
* [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/)
--> -->
* 阅读关于 [调度器性能调优](/zh-cn/docs/concepts/scheduling-eviction/scheduler-perf-tuning/) * 阅读关于[调度器性能调优](/zh-cn/docs/concepts/scheduling-eviction/scheduler-perf-tuning/)
* 阅读关于 [Pod 拓扑分布约束](/zh-cn/docs/concepts/scheduling-eviction/topology-spread-constraints/) * 阅读关于 [Pod 拓扑分布约束](/docs/concepts/scheduling-eviction/topology-spread-constraints/)
* 阅读关于 kube-scheduler 的 [参考文档](/zh-cn/docs/reference/command-line-tools-reference/kube-scheduler/) * 阅读关于 kube-scheduler 的[参考文档](/zh-cn/docs/reference/command-line-tools-reference/kube-scheduler/)
* 阅读 [kube-scheduler 配置参考 (v1beta3)](/zh-cn/docs/reference/config-api/kube-scheduler-config.v1beta3/) * 阅读 [kube-scheduler 配置参考 (v1beta3)](/zh-cn/docs/reference/config-api/kube-scheduler-config.v1beta3/)
* 了解关于 [配置多个调度器](/zh-cn/docs/tasks/extend-kubernetes/configure-multiple-schedulers/) 的方式 * 了解关于[配置多个调度器](/zh-cn/docs/tasks/extend-kubernetes/configure-multiple-schedulers/) 的方式
* 了解关于 [拓扑结构管理策略](/zh-cn/docs/tasks/administer-cluster/topology-manager/) * 了解关于[拓扑结构管理策略](/zh-cn/docs/tasks/administer-cluster/topology-manager/)
* 了解关于 [Pod 额外开销](/zh-cn/docs/concepts/scheduling-eviction/pod-overhead/) * 了解关于 [Pod 开销](/zh-cn/docs/concepts/scheduling-eviction/pod-overhead/)
* 了解关于如何在以下情形使用卷来调度 Pod:
* [卷拓扑支持](/zh-cn/docs/concepts/storage/storage-classes/#volume-binding-mode)
* [存储容量跟踪](/zh-cn/docs/concepts/storage/storage-capacity/)
* [特定于节点的卷数限制](/zh-cn/docs/concepts/storage/storage-limits/)