HugePage

HugePage 是 v1.9 中引入的新特性(v1.9 Alpha,v1.10 Beta),允许在容器中直接使用 Node 上的 HugePage。

配置

  • --feature-gates=HugePages=true
  • Node 节点上预先分配好 HugePage,如
  1. mount -t hugetlbfs \
  2. -o uid=<value>,gid=<value>,mode=<value>,pagesize=<value>,size=<value>,\
  3. min_size=<value>,nr_inodes=<value> none /mnt/huge

使用

  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. generateName: hugepages-volume-
  5. spec:
  6. containers:
  7. - image: fedora:latest
  8. command:
  9. - sleep
  10. - inf
  11. name: example
  12. volumeMounts:
  13. - mountPath: /hugepages
  14. name: hugepage
  15. resources:
  16. limits:
  17. hugepages-2Mi: 100Mi
  18. volumes:
  19. - name: hugepage
  20. emptyDir:
  21. medium: HugePages

注意

  • HugePage 请求和限制必须相等
  • HugePage 提供 Pod 级别的隔离,暂不支持容器级别的隔离
  • 基于 HugePage 的 EmptyDir 存储卷仅可使用请求的 HugePage 内存
  • 可以通过 ResourceQuota 限制 HugePage 的用量
  • 容器应用内使用 shmget(SHM_HUGETLB) 获取 HugePage 时,必需配置与 proc/sys/vm/hugetlb_shm_group 中一致的用户组(securityContext.SupplementalGroups