From 604d64c0e7c93412ce1b1b500203c9c8a18f8d13 Mon Sep 17 00:00:00 2001 From: lichuqiang Date: Fri, 20 Oct 2017 13:47:51 +0800 Subject: [PATCH] translate doc scheduling-hugepages into chinese --- .../manage-hugepages/scheduling-hugepages.md | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 cn/docs/tasks/manage-hugepages/scheduling-hugepages.md diff --git a/cn/docs/tasks/manage-hugepages/scheduling-hugepages.md b/cn/docs/tasks/manage-hugepages/scheduling-hugepages.md new file mode 100644 index 0000000000..ea9235d6d6 --- /dev/null +++ b/cn/docs/tasks/manage-hugepages/scheduling-hugepages.md @@ -0,0 +1,69 @@ +--- +approvers: +- derekwaynecarr +title: 管理巨页(HugePages) +--- + +{% capture overview %} +{% include feature-state-alpha.md %} + +作为 **alpha** 特性,Kubernetes 支持在 Pod 应用中使用预先分配的巨页(或称“大页面”,下文统称为“巨页”)。 本文描述了用户如何使用巨页,以及当前的限制。 + +{% endcapture %} + +{% capture prerequisites %} + +1. 为了使节点能够上报巨页容量,Kubernetes 节点必须预先分配巨页。 + 每个节点只能预先分配一种特定规格的巨页。 +1. 用户必须在整个系统中将专用的 **alpha** 特性开关 `HugePages` 设置为 true: `--feature-gates="HugePages=true"`。 + +节点会自动发现全部巨页资源,并作为可供调度的资源进行上报。 + +{% endcapture %} + +{% capture steps %} + +## API + +用户可以通过在容器级别的资源需求中使用资源名称 `hugepages-` 来使用巨页,其中的 size 是特定节点上支持的以整数值表示的最小二进制单位。 例如,如果节点支持 2048KiB 的页面规格, 它将暴露可供调度的资源 `hugepages-2Mi`。 与 CPU 或内存不同,巨页不支持过量使用(overcommit)。 + +```yaml +apiVersion: v1 +kind: Pod +metadata: + generateName: hugepages-volume- +spec: + containers: + - image: fedora:latest + command: + - sleep + - inf + name: example + volumeMounts: + - mountPath: /hugepages + name: hugepage + resources: + limits: + hugepages-2Mi: 100Mi + volumes: + - name: hugepage + emptyDir: + medium: HugePages +``` + +- 巨页的资源需求和限制必须相等。 该条件在指定了资源限制,而没有指定需求的情况下默认成立。 +- 巨页是被隔离在 pod 作用域的,计划在将来的迭代中实现容器级别的隔离。 +- 巨页对 EmptyDir 卷提供支持,EmptyDir 卷所使用的巨页,不能够超出 pod 请求的内存容量。 +- 通过带有 `SHM_HUGETLB` 的 `shmget()` 使用巨页的应用,必须运行在一个与 + `proc/sys/vm/hugetlb_shm_group` 匹配的补充组下。 + +## (待实现的)特性 + +- 在 pod 级别隔离的基础上,支持巨页在容器级别的隔离。 +- 作为服务质量特性,保证巨页的 NUMA 局部性。 +- 支持 ResourceQuota 。 +- 支持 LimitRange 。 + +{% endcapture %} + +{% include templates/task.md %}