管理 HugePages
在集群中将巨页配置和管理为可调度的资源。
功能状态:
Kubernetes v1.14 [稳定版]
(默认启用:true)Kubernetes 支持 Pod 中应用程序分配和使用预分配的巨页。此页面描述用户如何使用巨页。
开始之前
Kubernetes 节点必须预分配巨页,以便节点报告其巨页容量。
一个节点可以预分配多种大小的巨页,例如,/etc/default/grub
中的以下行分配了 2*1GiB
的 1 GiB 和 512*2 MiB
的 2 MiB 页面
GRUB_CMDLINE_LINUX="hugepagesz=1G hugepages=2 hugepagesz=2M hugepages=512"
节点将自动发现并将所有巨页资源报告为可调度的资源。
当您描述节点时,您应该在 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: ...
注意
对于动态分配的页面(启动后),需要重新启动 Kubelet 才能反映新的分配。API
巨页可以通过容器级别的资源需求使用资源名称 hugepages-<size>
来使用,其中 <size>
是在特定节点上支持的、使用整数值的最紧凑的二进制表示法。例如,如果一个节点支持 2048KiB 和 1048576KiB 的页面大小,它将公开可调度的资源 hugepages-2Mi
和 hugepages-1Gi
。与 CPU 或内存不同,巨页不支持超额分配。请注意,当请求巨页资源时,也必须请求内存或 CPU 资源。
一个 Pod 可以在单个 Pod 规范中使用多种巨页大小。在这种情况下,它必须对所有卷挂载使用 medium: HugePages-<hugepagesize>
表示法。
apiVersion: v1
kind: Pod
metadata:
name: huge-pages-example
spec:
containers:
- name: example
image: fedora:latest
command:
- sleep
- inf
volumeMounts:
- mountPath: /hugepages-2Mi
name: hugepage-2mi
- mountPath: /hugepages-1Gi
name: hugepage-1gi
resources:
limits:
hugepages-2Mi: 100Mi
hugepages-1Gi: 2Gi
memory: 100Mi
requests:
memory: 100Mi
volumes:
- name: hugepage-2mi
emptyDir:
medium: HugePages-2Mi
- name: hugepage-1gi
emptyDir:
medium: HugePages-1Gi
只有当 Pod 请求一种大小的巨页时,它才能使用 medium: HugePages
。
apiVersion: v1
kind: Pod
metadata:
name: huge-pages-example
spec:
containers:
- name: example
image: fedora:latest
command:
- sleep
- inf
volumeMounts:
- mountPath: /hugepages
name: hugepage
resources:
limits:
hugepages-2Mi: 100Mi
memory: 100Mi
requests:
memory: 100Mi
volumes:
- name: hugepage
emptyDir:
medium: HugePages
- 巨页请求必须等于限制。如果指定了限制,但没有指定请求,则这是默认设置。
- 巨页在容器范围内隔离,因此每个容器在其 cgroup 沙箱上都有自己的限制,如容器规范中所请求。
- 由巨页支持的 EmptyDir 卷消耗的巨页内存不得超过 Pod 请求的内存。
- 通过
shmget()
与SHM_HUGETLB
使用巨页的应用程序必须使用与proc/sys/vm/hugetlb_shm_group
匹配的补充组运行。 - 命名空间中的巨页使用量可以通过 ResourceQuota 来控制,类似于其他计算资源(如
cpu
或memory
),使用hugepages-<size>
令牌。
上次修改时间:2024 年 6 月 6 日,太平洋标准时间凌晨 12:21:修复特性状态 (53da5f74ab)