本章節將詳細介紹節點數據盤空間分配的情況,以便您根據業務實際情況配置數據盤大小。
在創建節點時,您需要配置節點數據盤,且數據盤容量不小于100G。您可“單擊展開高級配置”,自定義節點數據盤的空間分配。

-
自定義容器引擎空間大小說明]:CCE 將數據盤空間劃分為兩塊:一塊用于存放容器引擎 (Docker/Containerd) 工作目錄、容器鏡像的數據和鏡像元數據;另一塊用于Kubelet組件和EmptyDir臨時存儲等。容器引擎空間的剩余容量將會影響鏡像下載和容器的啟動及運行。
- 容器引擎和容器鏡像空間(默認占90%):用于容器運行時工作目錄、存儲容器鏡像數據以及鏡像元數據。
- Kubelet組件和EmptyDir臨時存儲(默認占10%):用于存儲Pod配置文件、密鑰以及臨時存儲EmptyDir等掛載數據。
-
自定義Pod容器空間大小:即容器的basesize設置,每個工作負載下的容器組 Pod 占用的磁盤空間設置上限(包含容器鏡像占用的空間)。合理的配置可避免容器組無節制使用磁盤空間導致業務異常。建議此值不超過容器引擎空間的 80%。該參數與節點操作系統和容器存儲Rootfs相關,部分場景下不支持設置。
自定義容器引擎空間大小
數據盤根據容器存儲Rootfs不同具有兩種劃分方式(以100G大小為例):DeviceMapper類型和 OverlayFS類型 。
您可以登錄到節點通過docker info命令查看存儲引擎類型,如下所示。
#docker infoContainers: 20
Running: 17
Paused: 0
Stopped: 3
Images: 16
Server Version: 18.09.0
Storage Driver: devicemapper
-
Device Mapper類型存儲Rootfs其中默認占90%的容器引擎和容器鏡像空間又可分為以下兩個部分:\
- 其中/var/lib/docker用于Docker工作目錄,默認占比20%,其空間大小 = 數據盤空間 * 90% * 20%
- thinpool用于存儲容器鏡像數據、鏡像元數據以及容器使用的磁盤空間,默認占比為80%,其空間大小 = 數據盤空間 *90% * 80%
thinpool是動態掛載,在節點上使用df -h命令無法查看到,使用lsblk命令可以查看到。

OverlayFS類型存儲Rootfs
相比Device Mapper存儲引擎,沒有單獨劃分thinpool,容器引擎和容器鏡像空間(默認占90%)都在/var/lib/docker目錄下。

容器存儲Rootfs情況如下:
CCE集群:EulerOS 2.5操作系統使用Device Mapper,Ubuntu 18.04和EulerOS 2.9使用OverlayFS。CentOS 7.6 在1.19.16以下版本集群中使用Device Mapper,1.19.16及以上版本集群使用OverlayFS。EulerOS 2.8系統在集群版本v1.19.16-r2前使用Device Mapper, v1.19.16-r2及之后版本使用OverlayFS。
自定義Pod容器空間大小
自定義Pod容器空間(basesize)設置與節點操作系統和容器存儲Rootfs相關(容器存儲Rootfs可登錄到節點通過docker info命令查看):
- Device Mapper模式下支持自定義Pod容器空間(basesize)配置,默認值為10G。
- OverlayFS模式默認不限制Pod容器空間大小。
配置Pod容器空間(basesize)時,需要同時考慮節點的最大實例數配置。理想情況下,容器引擎空間需要大于容器使用的磁盤總空間,即:容器引擎和容器鏡像空間(默認占90%) > 容器數量 *** Pod容器空間(basesize)** 。否則,可能會引起節點分配的容器引擎空間不足,從而導致容器啟動失敗。

對于支持配置basesize的節點,盡管可以限制單個容器的主目錄大小(開啟時默認為10GB),但節點上的所有容器還是共用節點的thinpool磁盤空間,并不是完全隔離,當一些容器使用大量thinpool空間且總和達到節點thinpool空間上限時,也會影響其他容器正常運行。
另外,在容器的主目錄中創刪文件后,其占用的thinpool空間不會立即釋放,因此即使basesize已經配置為10GB,而容器中不斷創刪文件時,占用的thinpool空間會不斷增加一直到10GB為止,后續才會復用這10GB空間。如果節點上的容器數量*basesize > 節點thinpool空間大小,理論上有概率出現節點thinpool空間耗盡的場景。
鏡像回收策略說明
當容器引擎空間不足時,會觸發鏡像垃圾回收。
鏡像垃圾回收策略只考慮兩個因素:HighThresholdPercent 和 LowThresholdPercent。 磁盤使用率超過上限閾值(HighThresholdPercent,默認值為85%)將觸發垃圾回收。 垃圾回收將刪除最近最少使用的鏡像,直到磁盤使用率滿足下限閾值(LowThresholdPercent,默認值為80%)。
容器引擎空間大小配置建議
- 容器引擎空間需要大于容器使用的磁盤總空間,即:容器引擎空間 > 容器數量 * Pod容器空間(basesize)
- 容器業務的創刪文件操作建議在容器掛載的本地存儲(如emptyDir、hostPath)或云存儲的目錄中進行,這樣不會占用thinpool空間。其中Emptydir使用的是kubelet空間,需要規劃好kubelet空間的大小。
- 容器運行時使用OverlayFS存儲模式,當前CCE集群中Ubuntu 18.04節點容器已默認使用OverlayFS存儲模式,1.19.16版本及以上集群CentOS 7.6使用OverlayFS模式,可將業務部署在此類節點上,避免容器內創刪文件后占用的磁盤空間不立即釋放問題。