Kubernetes 管理巨頁(HugePages)

2022-06-20 10:20 更新

管理巨頁(HugePages)

特性狀態(tài): Kubernetes v1.24 [stable]

Kubernetes 支持在 Pod 應用中使用預先分配的巨頁。本文描述了用戶如何使用巨頁,以及當前的限制。

在開始之前

為了使節(jié)點能夠上報巨頁容量,Kubernetes 節(jié)點必須預先分配巨頁。每個節(jié)點能夠預先分配多種規(guī)格的巨頁。

節(jié)點會自動發(fā)現(xiàn)全部巨頁資源,并作為可供調度的資源進行上報。

API

用戶可以通過在容器級別的資源需求中使用資源名稱 ?hugepages-<size>? 來使用巨頁,其中的 size 是特定節(jié)點上支持的以整數(shù)值表示的最小二進制單位。 例如,如果一個節(jié)點支持 2048KiB 和 1048576KiB 頁面大小,它將公開可調度的資源 ?hugepages-2Mi? 和 ?hugepages-1Gi?。與 CPU 或內存不同,巨頁不支持過量使用(overcommit)。 注意,在請求巨頁資源時,還必須請求內存或 CPU 資源。

同一 Pod 的 spec 中可能會消耗不同尺寸的巨頁。在這種情況下,它必須對所有掛載卷使用 ?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

  • 巨頁的資源請求值必須等于其限制值。該條件在指定了資源限制,而沒有指定請求的情況下默認成立。
  • 巨頁是被隔離在 pod 作用域的,因此每個容器在 spec 中都對 cgroup 沙盒有自己的限制。
  • 巨頁可用于 EmptyDir 卷,不過 EmptyDir 卷所使用的巨頁數(shù)量不能夠超出 Pod 請求的巨頁數(shù)量。
  • 通過帶有 ?SHM_HUGETLB ?的 ?shmget()? 使用巨頁的應用,必須運行在一個與 ?proc/sys/vm/hugetlb_shm_group? 匹配的補充組下。
  • 通過 ResourceQuota 資源,可以使用 ?hugepages-<size>? 標記控制每個命名空間下的巨頁使用量, 類似于使用 ?cpu ?或 ?memory ?來控制其他計算資源。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號