管理 HugePages
将 HugePages 配置和管理为集群中的可调度资源。
功能状态:
Kubernetes v1.14 [稳定](默认启用)Kubernetes 支持 Pod 中应用程序分配和使用预分配的 HugePages。本页面描述了用户如何使用 HugePages。
开始之前
Kubernetes 节点必须 预分配 HugePages,以便节点报告其 HugePage 容量。
节点可以为多个大小预分配 HugePages,例如,以下行在 /etc/default/grub 中分配 2*1GiB 的 1 GiB 和 512*2 MiB 的 2 MiB 页面
GRUB_CMDLINE_LINUX="hugepagesz=1G hugepages=2 hugepagesz=2M hugepages=512"
节点将自动发现并报告所有 HugePage 资源作为可调度的资源。
描述节点时,您应该在 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> 来使用 HugePages,其中 <size> 是特定节点上支持的最紧凑的二进制表示形式的整数值。例如,如果节点支持 2048KiB 和 1048576KiB 页面大小,它将公开可调度的资源 hugepages-2Mi 和 hugepages-1Gi。与 CPU 或内存不同,HugePages 不支持过度提交。请注意,在请求 HugePage 资源时,必须同时请求内存或 CPU 资源。
Pod 可以在单个 Pod 规范中使用多个 HugePage 大小。在这种情况下,它必须对所有卷挂载使用 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 请求单一大小的 HugePages,则可以使用 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
- HugePage 请求必须等于限制。如果指定了限制但未指定请求,则这是默认行为。
- HugePages 在容器范围内隔离,因此每个容器在其 cgroup 沙箱中都有其容器规范中请求的限制。
- 由 HugePages 支持的 EmptyDir 卷不能消耗超过 Pod 请求的 HugePage 内存。
- 通过
shmget()使用SHM_HUGETLB使用 HugePages 的应用程序必须使用与proc/sys/vm/hugetlb_shm_group匹配的补充组运行。 - 可以使用 ResourceQuota 类似其他计算资源(如
cpu或memory)使用hugepages-<size>令牌来控制命名空间中的 HugePage 使用量。
上次修改时间:2024 年 6 月 06 日 12:21 AM PST:修复功能状态 (53da5f74ab)