云服务器内容精选

  • 容器引擎和Kubelet共享磁盘空间说明 容器引擎和Kubelet共享磁盘空间即在节点上不再划分容器引擎 (Docker/Containerd) 和Kubelet组件的空间,二者共用磁盘空间。 容器引擎和Kubelet共享磁盘空间仅v1.21.10-r0、v1.23.8-r0、v1.25.3-r0及以上的集群支持。 容器存储Rootfs为OverlayFS类型时支持共享磁盘空间,Device Mapper类型不支持。 若您在集群中安装了npd插件,请将插件升级至1.18.10版本及以上,否则会产生误报警。 若您在集群中安装了log-agent插件,请将插件升级至1.3.0版本及以上,否则会影响日志采集。 若您在集群中安装了ICAgent,请将ICAgent升级至5.12.140版本及以上,否则会影响日志采集。查看或升级ICAgent版本请参见CCE接入。 图5 共享磁盘空间配置 对于共享磁盘空间的节点,容器存储Rootfs为OverlayFS类型。节点创建完成后,数据盘空间(以100G大小为例)不再划分容器引擎和容器镜像空间和Kubelet组件空间,均在/mnt/paas目录下,并通过两个文件系统区分: dockersys:/mnt/paas/runtime kubernetes:/mnt/paas/kubernetes/kubelet 图6 共享数据盘空间分配
  • 镜像回收策略说明 当容器引擎空间不足时,会触发镜像垃圾回收。 镜像垃圾回收策略只考虑两个因素:HighThresholdPercent 和 LowThresholdPercent。 磁盘使用率超过上限阈值(HighThresholdPercent,默认值为80%)将触发垃圾回收。 垃圾回收将删除最近最少使用的镜像,直到磁盘使用率满足下限阈值(LowThresholdPercent,默认值为70%)。
  • 操作系统与容器存储Rootfs对应关系 表1 CCE集群节点操作系统与容器引擎对应关系 操作系统 容器存储Rootfs 自定义Pod容器空间(basesize) CentOS 7.x v1.19.16以下版本集群使用Device Mapper v1.19.16及以上版本集群使用OverlayFS Rootfs为Device Mapper且容器引擎为Docker时支持,默认值为10G。 Rootfs为OverlayFS时不支持。 EulerOS 2.3 Device Mapper 仅容器引擎为Docker时支持,默认值为10G。 EulerOS 2.5 Device Mapper 仅容器引擎为Docker时支持,默认值为10G。 EulerOS 2.8 v1.19.16-r2以下版本集群使用Device Mapper v1.19.16-r2及以上版本集群使用OverlayFS Rootfs为Device Mapper且容器引擎为Docker时支持,默认值为10G。 Rootfs为OverlayFS且容器引擎为Docker时支持,默认值为不限制。 EulerOS 2.9 OverlayFS 仅v1.19.16、v1.21.3、v1.23.3及以上的集群版本支持,默认值为不限制。 v1.19.16、v1.21.3、v1.23.3以前的集群版本不支持。 EulerOS 2.10 OverlayFS 集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0以下时,仅容器引擎为Docker时支持,默认值为不限制。 集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上时,Docker和containerd均支持,默认值为不限制。 Ubuntu 18.04 OverlayFS 不支持。 Huawei Cloud EulerOS 1.1 OverlayFS 不支持。 Huawei Cloud EulerOS 2.0 OverlayFS 集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0以下时,仅容器引擎为Docker时支持,默认值为不限制。 集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上时,Docker和containerd均支持,默认值为不限制。 表2 CCE Turbo集群节点操作系统与容器引擎对应关系 操作系统 容器存储Rootfs 自定义Pod容器空间(basesize) CentOS 7.x OverlayFS 不支持。 Ubuntu 18.04 OverlayFS 不支持。 EulerOS 2.9 弹性云服务器-虚拟机使用OverlayFS 弹性云服务器-物理机使用Device Mapper Rootfs为OverlayFS且仅容器引擎为Docker时支持,默认值为不限制。集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上时,Docker和containerd均支持。 Rootfs为Device Mapper且容器引擎为Docker时支持,默认值为10G。 Huawei Cloud EulerOS 1.1 OverlayFS 不支持。 Huawei Cloud EulerOS 2.0 OverlayFS 集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0以下时,仅容器引擎为Docker时支持,默认值为不限制。 集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上时,Docker和containerd均支持,默认值为不限制。
  • 设置数据盘空间分配 在创建节点时,您需要配置节点数据盘,您可单击“展开高级配置”,自定义节点数据盘的空间分配。 图1 设置数据盘空间分配 容器引擎空间分配: 指定磁盘空间:CCE将数据盘空间默认划分为两块,一块用于存放容器引擎 (Docker/Containerd) 工作目录、容器镜像的数据和镜像元数据;另一块用于Kubelet组件和EmptyDir临时存储等。容器引擎空间的剩余容量将会影响镜像下载和容器的启动及运行。 容器引擎和容器镜像空间(默认占90%):用于容器运行时工作目录、存储容器镜像数据以及镜像元数据。 Kubelet组件和EmptyDir临时存储(默认占10%):用于存储Pod配置文件、密钥以及临时存储EmptyDir等挂载数据。 共享磁盘空间:v1.21.10-r0、v1.23.8-r0、v1.25.3-r0及之后版本的集群中,CCE使用的数据盘支持采用容器引擎和Kubelet共享磁盘空间的方式,即不再划分容器引擎 (Docker/Containerd) 和Kubelet组件的空间。 Pod容器空间分配:即容器的basesize设置,每个工作负载下的容器组 Pod 占用的磁盘空间设置上限(包含容器镜像占用的空间)。合理的配置可避免容器组无节制使用磁盘空间导致业务异常。建议此值不超过容器引擎空间的 80%。该参数与节点操作系统和容器存储Rootfs相关,部分场景下不支持设置。详情请参见操作系统与容器存储Rootfs对应关系。 写入模式: 线性:线性逻辑卷是将一个或多个物理卷整合为一个逻辑卷,实际写入数据时会先往一个基本物理卷上写入,当存储空间占满时再往另一个基本物理卷写入。 条带化:有两块以上数据盘时才可支持选择条带化模式。创建逻辑卷时指定条带化,当实际写入数据时会将连续数据分成大小相同的块,然后依次存储在多个物理卷上,实现数据的并发读写从而提高读写性能。条带化模式的存储池不支持扩容。
  • 容器引擎空间分配 对于容器引擎和Kubelet共享磁盘空间的节点,容器存储Rootfs为OverlayFS类型,数据盘空间分配详情请参见容器引擎和Kubelet共享磁盘空间说明。 对于容器引擎和Kubelet不共享磁盘空间的节点,数据盘根据容器存储Rootfs不同具有两种划分方式(以100G大小为例):Device Mapper类型和OverlayFS类型。不同操作系统对应的容器存储Rootfs请参见操作系统与容器存储Rootfs对应关系。 Device Mapper类型存储Rootfs 其中默认占90%的容器引擎和容器镜像空间又可分为以下两个部分: 其中/var/lib/docker用于Docker工作目录,默认占比20%,其空间大小 = 数据盘空间 * 90% * 20% thinpool用于存储容器镜像数据、镜像元数据以及容器使用的磁盘空间,默认占比为80%,其空间大小 = 数据盘空间 * 90% * 80% thinpool是动态挂载,在节点上使用df -h命令无法查看到,使用lsblk命令可以查看到。 图2 Device Mapper类型容器引擎空间分配 OverlayFS类型存储Rootfs 相比Device Mapper存储引擎,没有单独划分thinpool,容器引擎和容器镜像空间(默认占90%)都在/var/lib/docker目录下。 图3 OverlayFS类型容器引擎空间分配
  • 节点最大Pod数量计算方式 根据集群类型不同,节点可创建的最大Pod数量计算方式如下: 对于“容器隧道网络”的集群,仅取决于节点最大实例数。 对于“VPC网络”的集群,取决于节点最大实例数和节点可分配容器IP数中的最小值,建议节点最大实例数不要超过节点可分配容器IP数,否则当容器IP数不足时Pod实例可能无法调度。 对于“云原生2.0网络”的集群(CCE Turbo集群),取决于节点最大实例数和CCE Turbo集群节点网卡数量中的最小值。建议节点最大实例数不要超过节点网卡数,否则当节点规格可分配网卡不足时Pod实例可能无法正常调度。
  • 节点可分配容器IP数 在创建CCE集群时,如果网络模型选择“VPC网络”,会让您选择每个节点可供分配的容器IP数量(alpha.cce/fixPoolMask)。Pod直接使用宿主机的网络(配置hostNetwork: true)时,不占用可分配容器IP,详情请参见容器网络 vs 主机网络。 该参数会影响节点上可以创建最大Pod的数量,因为每个Pod会占用一个IP(使用容器网络的情况),如果可用IP数量不够的话,就无法创建Pod。Pod直接使用宿主机的网络(配置hostNetwork: true)时,不占用可分配容器IP。 图1 VPC网络模型节点可分配容器IP数配置 节点默认会占用掉3个容器IP地址(网络地址、网关地址、广播地址),因此节点上 可分配给容器使用的IP数量 = 您选择的容器IP数量 - 3,例如上面图中可分配给容器使用的IP数量为 128-3=125。
  • 节点最大实例数 在创建节点时,可以配置节点可以创建的最大实例数(maxPods)。该参数是kubelet的配置参数,决定kubelet最多可创建多少个Pod。 对于默认节点池(DefaultPool)中的节点,节点创建完成后,最大实例数不支持修改。 对于自定义节点池中的节点,创建完成后可通过修改节点池配置中的max-pods参数,修改节点最大实例数。详情请参见节点池配置管理。 默认场景下,节点最大实例数最多可调整至256。如果您期望提升节点上的部署密度,您可以提交工单申请调整节点最大实例数,最大支持修改至512个实例。 图2 节点最大实例数配置 根据节点规格不同,节点默认最大实例数如表1所示。 表1 节点默认最大实例数 内存 节点默认最大实例数 4G 20 8G 40 16G 60 32G 80 64G及以上 110
  • 容器网络 vs 主机网络 创建Pod时,可以选择Pod使用容器网络或是宿主机网络。 容器网络:默认使用容器网络,Pod的网络由集群网络插件负责分配,每个Pod分配一个IP地址,会占用容器网络的IP。 主机网络:Pod直接使用宿主机的网络(Pod需要配置hostNetwork: true),会占用宿主机的端口,Pod的IP就是宿主机的IP,不会占用容器网络的IP。使用时需要考虑是否与宿主机上的端口冲突,因此一般情况下除非您知道需要某个特定应用占用宿主机上的特定端口时,不建议使用主机网络。