From 83d7c2ea06da503dfb77afad0431475a600ee264 Mon Sep 17 00:00:00 2001 From: Michael Date: Wed, 25 Oct 2023 07:58:52 +0800 Subject: [PATCH] [zh] Sync scheduling-hugepages.md --- .../manage-hugepages/scheduling-hugepages.md | 68 ++++++++++++++----- .../imperative-config.md | 45 ++++++------ 2 files changed, 71 insertions(+), 42 deletions(-) diff --git a/content/zh-cn/docs/tasks/manage-hugepages/scheduling-hugepages.md b/content/zh-cn/docs/tasks/manage-hugepages/scheduling-hugepages.md index 64419de90fd08..d08cc6a99d01a 100644 --- a/content/zh-cn/docs/tasks/manage-hugepages/scheduling-hugepages.md +++ b/content/zh-cn/docs/tasks/manage-hugepages/scheduling-hugepages.md @@ -1,7 +1,7 @@ --- -title: 管理巨页(HugePages) +title: 管理巨页(HugePage) content_type: task -description: 将大页配置和管理为集群中的可调度资源。 +description: 将巨页作为集群中的可调度资源来配置和管理 --- + {{< feature-state state="stable" >}} Kubernetes 支持在 Pod 应用中使用预先分配的巨页。本文描述了用户如何使用巨页,以及当前的限制。 +## {{% heading "prerequisites" %}} + +为了使节点能够上报巨页容量,Kubernetes +节点必须[预先分配巨页](https://www.kernel.org/doc/html/latest/admin-guide/mm/hugetlbpage.html)。 +节点能够预先分配多种规格的巨页。例如,在 `/etc/default/grub` +中的以下这一行分配了 `2*1GiB` 的 1 GiB 页面和 `512*2 MiB` 的 2 MiB 页面。 - -1. 为了使节点能够上报巨页容量,Kubernetes 节点必须预先分配巨页。每个节点能够预先分配多种规格的巨页。 -节点会自动发现全部巨页资源,并作为可供调度的资源进行上报。 +When you describe the Node, you should see something similar to the following +in the following in the `Capacity` and `Allocatable` sections: +--> +节点将自动发现并报告所有巨页资源作为可调度资源。 +当你描述 Node 时,你应该在 `Capacity` 和 `Allocatable` 节中看到类似以下内容: +``` +Capacity: + cpu: ... + ephemeral-storage: ... + hugepages-1Gi: 2Gi + hugepages-2Mi: 1Gi + memory: ... + pods: ... +Allocatable: + cpu: ... + ephemeral-storage: ... + hugepages-1Gi: 2Gi + hugepages-2Mi: 1Gi + memory: ... + pods: ... +``` + +{{< note >}} + +对于动态分配的页面(引导后),kubelet 需要被重新启动才能更新为新的分配。 +{{< /note >}} @@ -55,7 +94,6 @@ memory or CPU resources must be requested as well. A pod may consume multiple huge page sizes in a single pod spec. In this case it must use `medium: HugePages-` notation for all volume mounts. ---> - 用户可以通过在容器级别的资源需求中使用资源名称 `hugepages-` 来使用巨页,其中的 size 是特定节点上支持的以整数值表示的最小二进制单位。 例如,如果一个节点支持 2048KiB 和 1048576KiB 页面大小,它将公开可调度的资源 @@ -97,6 +135,7 @@ spec: emptyDir: medium: HugePages-1Gi ``` + @@ -144,12 +183,9 @@ spec: ---> - 巨页的资源请求值必须等于其限制值。该条件在指定了资源限制,而没有指定请求的情况下默认成立。 -- 巨页是被隔离在 pod 作用域的,因此每个容器在 spec 中都对 cgroup 沙盒有自己的限制。 +- 巨页是被隔离在 Pod 作用域的,因此每个容器在 spec 中都对 cgroup 沙盒有自己的限制。 - 巨页可用于 EmptyDir 卷,不过 EmptyDir 卷所使用的巨页数量不能够超出 Pod 请求的巨页数量。 - 通过带有 `SHM_HUGETLB` 的 `shmget()` 使用巨页的应用,必须运行在一个与 - `proc/sys/vm/hugetlb_shm_group` 匹配的补充组下。 + `proc/sys/vm/hugetlb_shm_group` 匹配的补充组下。 - 通过 ResourceQuota 资源,可以使用 `hugepages-` 标记控制每个命名空间下的巨页使用量, 类似于使用 `cpu` 或 `memory` 来控制其他计算资源。 - - - diff --git a/content/zh-cn/docs/tasks/manage-kubernetes-objects/imperative-config.md b/content/zh-cn/docs/tasks/manage-kubernetes-objects/imperative-config.md index 78b55b8441df9..16d2578b12fb6 100644 --- a/content/zh-cn/docs/tasks/manage-kubernetes-objects/imperative-config.md +++ b/content/zh-cn/docs/tasks/manage-kubernetes-objects/imperative-config.md @@ -23,7 +23,7 @@ This document explains how to define and manage objects using configuration file -安装 [`kubectl`](/zh-cn/docs/tasks/tools/) 。 +安装 [`kubectl`](/zh-cn/docs/tasks/tools/)。 {{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} @@ -34,7 +34,7 @@ Install [`kubectl`](/docs/tasks/tools/). The `kubectl` tool supports three kinds of object management: --> -## 权衡 +## 权衡 {#trade-offs} `kubectl` 工具支持三种对象管理: @@ -51,7 +51,7 @@ The `kubectl` tool supports three kinds of object management: See [Kubernetes Object Management](/docs/concepts/overview/working-with-objects/object-management/) for a discussion of the advantages and disadvantage of each kind of object management. --> -参看 [Kubernetes 对象管理](/zh-cn/docs/concepts/overview/working-with-objects/object-management/) +参见 [Kubernetes 对象管理](/zh-cn/docs/concepts/overview/working-with-objects/object-management/) 中关于每种对象管理的优缺点的讨论。 -## 如何创建对象 +## 如何创建对象 {#how-to-create-objects} 你可以使用 `kubectl create -f` 从配置文件创建一个对象。 -请参考 [kubernetes API 参考](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/) 有关详细信息。 +更多细节参阅 [kubernetes API 参考](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/)。 * `kubectl create -f ` +## 如何更新对象 {#how-to-update-objects} +{{< warning >}} + -## 如何更新对象 - -{{< warning >}} 使用 `replace` 命令更新对象会删除所有未在配置文件中指定的规范的某些部分。 不应将其规范由集群部分管理的对象使用,比如类型为 `LoadBalancer` 的服务, 其中 `externalIPs` 字段独立于配置文件进行管理。 @@ -92,7 +93,7 @@ file to prevent `replace` from dropping them. You can use `kubectl replace -f` to update a live object according to a configuration file. --> -你可以使用 `kubectl replace -f` 根据配置文件更新活动对象。 +你可以使用 `kubectl replace -f` 根据配置文件更新活动对象。 * `kubectl replace -f ` @@ -102,24 +103,19 @@ configuration file. You can use `kubectl delete -f` to delete an object that is described in a configuration file. --> -## 如何删除对象 +## 如何删除对象 {#how-to-delete-objects} 你可以使用 `kubectl delete -f` 删除配置文件中描述的对象。 * `kubectl delete -f ` +{{< note >}} -{{< note >}} 如果配置文件在 `metadata` 节中设置了 `generateName` 字段而非 `name` 字段, 你无法使用 `kubectl delete -f ` 来删除该对象。 你必须使用其他标志才能删除对象。例如: @@ -136,7 +132,7 @@ kubectl delete -l