Skip to content

Commit

Permalink
[zh-cn] resync /scheduling-eviction/kube-scheduler.md
Browse files Browse the repository at this point in the history
  • Loading branch information
windsonsea committed Jul 25, 2022
1 parent af9b15a commit db58c59
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 38 deletions.
2 changes: 0 additions & 2 deletions content/zh-cn/docs/concepts/scheduling-eviction/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,6 @@ of terminating one or more Pods on Nodes.
<!--
## Pod Disruption
{{<glossary_definition term_id="pod-disruption" length="all">}}
* [Pod Priority and Preemption](/docs/concepts/scheduling-eviction/pod-priority-preemption/)
* [Node-pressure Eviction](/docs/concepts/scheduling-eviction/node-pressure-eviction/)
* [API-initiated Eviction](/docs/concepts/scheduling-eviction/api-eviction/)
Expand Down
80 changes: 44 additions & 36 deletions content/zh-cn/docs/concepts/scheduling-eviction/kube-scheduler.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
{{< glossary_tooltip term_id="kubelet" >}} can run them.
-->
在 Kubernetes 中,_调度_ 是指将 {{< glossary_tooltip text="Pod" term_id="pod" >}} 放置到合适的
{{< glossary_tooltip text="Node" term_id="node" >}} 上,然后对应 Node 上的
{{< glossary_tooltip term_id="kubelet" >}} 才能够运行这些 pod
在 Kubernetes 中,**调度** 是指将 {{< glossary_tooltip text="Pod" term_id="pod" >}}
放置到合适的{{< glossary_tooltip text="节点" term_id="node" >}}上,以便对应节点上的
{{< glossary_tooltip term_id="kubelet" >}} 能够运行这些 Pod

<!-- body -->
<!--
Expand All @@ -33,17 +33,17 @@ for finding the best Node for that Pod to run on. The scheduler reaches
this placement decision taking into account the scheduling principles
described below.
-->
调度器通过 kubernetes 的监测(Watch)机制来发现集群中新创建且尚未被调度到 Node 上的 Pod。
调度器会将发现的每一个未调度的 Pod 调度到一个合适的 Node 上来运行
调度器通过 Kubernetes 的监测(Watch)机制来发现集群中新创建且尚未被调度到节点上的 Pod。
调度器会将所发现的每一个未调度的 Pod 调度到一个合适的节点上来运行
调度器会依据下文的调度原则来做出调度选择。

<!--
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
page will help you learn about scheduling.
-->
如果你想要理解 Pod 为什么会被调度到特定的 Node 上,或者你想要尝试实现
一个自定义的调度器,这篇文章将帮助你了解调度。
如果你想要理解 Pod 为什么会被调度到特定的节点上,
或者你想要尝试实现一个自定义的调度器,这篇文章将帮助你了解调度。

<!--
## kube-scheduler
Expand All @@ -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/)
是 Kubernetes 集群的默认调度器,并且是集群
{{< 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
Expand All @@ -70,19 +70,19 @@ pods has different requirements for resources and every pod also has
different requirements. Therefore, existing nodes need to be filtered
according to the specific scheduling requirements.
-->
对每一个新创建的 Pod 或者是未被调度的 Pod,kube-scheduler 会选择一个最优的
Node 去运行这个 Pod。然而,Pod 内的每一个容器对资源都有不同的需求,而且
Pod 本身也有不同的资源需求。因此,Pod 在被调度到 Node 上之前
根据这些特定的资源调度需求,需要对集群中的 Node 进行一次过滤
对每一个新创建的 Pod 或者是未被调度的 Pod,kube-scheduler 会选择一个最优的节点去运行这个 Pod。
然而,Pod 内的每一个容器对资源都有不同的需求,
而且 Pod 本身也有不同的需求。因此,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
remains unscheduled until the scheduler is able to place it.
-->
在一个集群中,满足一个 Pod 调度请求的所有 Node 称之为 _可调度节点_
如果没有任何一个 Node 能满足 Pod 的资源请求,那么这个 Pod 将一直停留在
未调度状态直到调度器能够找到合适的 Node。
在一个集群中,满足一个 Pod 调度请求的所有节点称之为 **可调度节点**
如果没有任何一个节点能满足 Pod 的资源请求,
那么这个 Pod 将一直停留在未调度状态直到调度器能够找到合适的 Node。

<!--
The scheduler finds feasible Nodes for a Pod and then runs a set of
Expand All @@ -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_.
-->
调度器先在集群中找到一个 Pod 的所有可调度节点,然后根据一系列函数对这些可调度节点打分,
选出其中得分最高的 Node 来运行 Pod。之后,调度器将这个调度决定通知给
kube-apiserver,这个过程叫做 _绑定_
选出其中得分最高的节点来运行 Pod。之后,调度器将这个调度决定通知给
kube-apiserver,这个过程叫做 **绑定**

<!--
Factors that need to be taken into account for scheduling decisions include
Expand All @@ -114,7 +114,7 @@ kube-scheduler selects a node for the pod in a 2-step operation:
1. Filtering
2. Scoring
-->
kube-scheduler 给一个 pod 做调度选择包含两个步骤
kube-scheduler 给一个 Pod 做调度选择时包含两个步骤

1. 过滤
2. 打分
Expand All @@ -127,26 +127,26 @@ 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
Pod isn't (yet) schedulable.
-->
过滤阶段会将所有满足 Pod 调度需求的 Node 选出来
例如,PodFitsResources 过滤函数会检查候选 Node 的可用资源能否满足 Pod 的资源请求。
在过滤之后,得出一个 Node 列表,里面包含了所有可调度节点;通常情况下,
这个 Node 列表包含不止一个 Node。如果这个列表是空的,代表这个 Pod 不可调度。
过滤阶段会将所有满足 Pod 调度需求的节点选出来
例如,PodFitsResources 过滤函数会检查候选节点的可用资源能否满足 Pod 的资源请求。
在过滤之后,得出一个节点列表,里面包含了所有可调度节点;通常情况下,
这个节点列表包含不止一个节点。如果这个列表是空的,代表这个 Pod 不可调度。

<!--
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
that survived filtering, basing this score on the active scoring rules.
-->
在打分阶段,调度器会为 Pod 从所有可调度节点中选取一个最合适的 Node
在打分阶段,调度器会为 Pod 从所有可调度节点中选取一个最合适的节点
根据当前启用的打分规则,调度器会给每一个可调度节点进行打分。

<!--
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
one of these at random.
-->
最后,kube-scheduler 会将 Pod 调度到得分最高的 Node 上
如果存在多个得分最高的 Node,kube-scheduler 会从中随机选取一个。
最后,kube-scheduler 会将 Pod 调度到得分最高的节点上
如果存在多个得分最高的节点,kube-scheduler 会从中随机选取一个。

<!--
There are two supported ways to configure the filtering and scoring behavior
Expand All @@ -162,10 +162,10 @@ of the scheduler:
`QueueSort`, `Filter`, `Score`, `Bind`, `Reserve`, `Permit`, and others. You
can also configure the kube-scheduler to run different profiles.
-->
1. [调度策略](/zh-cn/docs/reference/scheduling/policies) 允许你配置过滤的 _断言(Predicates)_
和打分的 _优先级(Priorities)_
1. [调度策略](/zh-cn/docs/reference/scheduling/policies)
允许你配置过滤所用的 **断言(Predicates)** 和打分所用的 **优先级(Priorities)**
2. [调度配置](/zh-cn/docs/reference/scheduling/config/#profiles) 允许你配置实现不同调度阶段的插件,
包括:`QueueSort`, `Filter`, `Score`, `Bind`, `Reserve`, `Permit` 等等。
包括:`QueueSort``Filter``Score``Bind``Reserve``Permit` 等等。
你也可以配置 kube-scheduler 运行不同的配置文件。

## {{% heading "whatsnext" %}}
Expand All @@ -177,11 +177,19 @@ of the scheduler:
* 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/)
-->
* 阅读关于 [调度器性能调优](/zh-cn/docs/concepts/scheduling-eviction/scheduler-perf-tuning/)
* 阅读关于 [Pod 拓扑分布约束](/zh-cn/docs/concepts/scheduling-eviction/topology-spread-constraints/)
* 阅读关于 kube-scheduler 的 [参考文档](/zh-cn/docs/reference/command-line-tools-reference/kube-scheduler/)
* 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/)
* 阅读关于 [Pod 拓扑分布约束](/docs/concepts/scheduling-eviction/topology-spread-constraints/)
* 阅读关于 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/)
* 了解关于 [配置多个调度器](/zh-cn/docs/tasks/extend-kubernetes/configure-multiple-schedulers/) 的方式
* 了解关于 [拓扑结构管理策略](/zh-cn/docs/tasks/administer-cluster/topology-manager/)
* 了解关于 [Pod 额外开销](/zh-cn/docs/concepts/scheduling-eviction/pod-overhead/)
* 了解关于[配置多个调度器](/zh-cn/docs/tasks/extend-kubernetes/configure-multiple-schedulers/) 的方式
* 了解关于[拓扑结构管理策略](/zh-cn/docs/tasks/administer-cluster/topology-manager/)
* 了解关于 [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/)

0 comments on commit db58c59

Please sign in to comment.