云容器引擎 CCE-节点池配置管理:配置管理

时间:2024-05-17 11:30:04

配置管理

为方便对CCE集群中的Kubernetes配置参数进行管理,CCE提供了配置管理功能,通过该功能您可以对核心组件进行深度配置,更多信息请参见kubelet

仅支持在v1.15及以上版本的集群中对节点池进行配置,V1.15以下版本不显示该功能。

  1. 登录CCE控制台。
  2. 单击集群名称进入集群,在左侧选择“节点管理”,在右侧选择“节点池”页签。
  3. 单击节点池名称后的“配置管理”
  4. 在侧边栏滑出的“配置管理”窗口中,根据业务需求修改Kubernetes的参数值:

    表1 kubelet组件配置

    名称

    参数

    参数说明

    取值

    修改说明

    CPU管理策略配置

    cpu-manager-policy

    CPU管理策略配置,详情请参见CPU调度

    • none:关闭工作负载实例独占CPU的功能,优点是CPU共享池的可分配核数较多。
    • static:开启工作负载实例独占CPU,适用于对CPU缓存和调度延迟敏感的场景。
    • enhanced-static:在支持CPU独占的基础上,增强支持给Burstable Pods配置CPU优先使用核,适用于波峰、波谷相差大且大部分时间处于波谷状态的工作负载。

    默认:none

    -

    请求至kube-apiserver的QPS配置

    kube-api-qps

    与APIServer通信的每秒查询个数。

    默认:100

    -

    请求至kube-apiserver的Burst配置

    kube-api-burst

    每秒发送到APIServer的突发请求数量上限。

    默认:100

    -

    kubelet管理的Pod上限

    max-pods

    Node能运行的Pod最大数量。

    -

    限制Pod中的进程数

    pod-pids-limit

    每个Pod中可使用的PID个数上限。

    默认:-1,表示不限制

    -

    是否使用本地IP作为该节点的ClusterDNS

    with-local-dns

    开启后,会自动在节点的kubelet配置中添加节点默认网卡IP作为首选 DNS地址

    默认:关闭(参数值为false)

    -

    事件创建QPS限制

    event-qps

    每秒可生成的事件数量。

    默认:5

    -

    事件创建的个数的突发峰值上限

    event-burst

    突发性事件创建的上限值,允许突发性事件创建临时上升到所指定数量。

    默认:10

    -

    允许使用的不安全系统配置

    allowed-unsafe-sysctls

    允许使用的不安全系统配置。

    CCE从1.17.17集群版本开始,kube-apiserver开启了pod安全策略,需要在pod安全策略的allowedUnsafeSysctls中增加相应的配置才能生效(1.17.17以下版本的集群可不配置)。详情请参见Pod安全策略开放非安全系统配置示例

    默认:[]

    -

    节点超卖特性

    over-subscription-resource

    节点超卖特性。

    设置为true表示开启节点超卖特性,节点超卖的特性请参见动态资源超卖

    • 集群版本为v1.23.9-r0、v1.25.4-r0以下:默认为开启(参数值为true)
    • 集群版本为v1.23.9-r0、v1.25.4-r0、v1.27-r0、v1.28.1-r0及以上:默认为关闭(参数值为false)

    -

    节点混部特性

    colocation

    节点混部特性。

    设置为true表示开启节点混部特性,节点混部的特性请参见动态资源超卖

    • 集群版本为v1.23.9-r0、v1.25.4-r0以下:默认为开启(参数值为true)
    • 集群版本为v1.23.9-r0、v1.25.4-r0、v1.27-r0、v1.28.1-r0及以上:默认为关闭(参数值为false)

    -

    拓扑管理策略

    topology-manager-policy

    设置拓扑管理策略。

    合法值包括:

    • restricted:kubelet 仅接受在所请求资源上实现最佳 NUMA对齐的Pod。
    • best-effort:kubelet会优先选择在 CPU 和设备资源上实现NUMA对齐的Pod。
    • none(默认):不启用拓扑管理策略。
    • single-numa-node:kubelet仅允许在 CPU和设备资源上对齐到同一NUMA节点的Pod。

    默认:none

    须知:

    请谨慎修改,修改topology-manager-policy和topology-manager-scope会重启kubelet,并且以更改后的策略重新计算容器实例的资源分配,这有可能导致已经运行的容器实例重启甚至无法进行资源分配。

    拓扑管理策略的资源对齐粒度

    topology-manager-scope

    设置拓扑管理策略的资源对齐粒度。合法值包括:

    • container (默认):对齐粒度为容器级
    • pod:对齐粒度为Pod级

    默认:container

    容器指定DNS解析配置文件

    resolv-conf

    容器指定DNS解析配置文件

    默认为空值

    -

    除长期运行的请求之外所有运行时请求的超时时长

    runtime-request-timeout

    除长期运行的请求(pull、 logs、exec和attach)之外所有运行时请求的超时时长。

    默认为2m0s

    v1.21.10-r0、v1.23.8-r0、v1.25.3-r0及以上版本的集群支持该参数。

    是否让kubelet每次仅拉取一个镜像

    serialize-image-pulls

    串行拉取镜像。

    • 关闭:建议值,以支持并行拉取镜像,提高Pod启动速度。
    • 开启:支持串行拉取镜像。
    • 集群版本为v1.21.12-r0、v1.23.11-r0、v1.25.6-r0、v1.27.3-r0、v1.28.1-r0以下:默认为开启(参数值为true)
    • 集群版本为v1.21.12-r0、v1.23.11-r0、v1.25.6-r0、v1.27.3-r0、v1.28.1-r0及以上:默认为关闭(参数值为false)

    v1.21.10-r0、v1.23.8-r0、v1.25.3-r0及以上版本的集群支持该参数。

    每秒钟可以执行的镜像仓库拉取操作限值

    registry-pull-qps

    镜像仓库的QPS上限。

    默认为5

    取值范围为1~50

    v1.21.10-r0、v1.23.8-r0、v1.25.3-r0及以上版本的集群支持该参数。

    突发性镜像拉取的上限值

    registry-burst

    突发性镜像拉取的上限值,允许镜像拉取临时上升到所指定数量。

    默认为10

    取值范围为1~100,且取值必须大于等于registry-pull-qps的值。

    v1.21.10-r0、v1.23.8-r0、v1.25.3-r0及以上版本的集群支持该参数。

    容器的日志文件个数上限

    container-log-max-files

    每个容器日志文件的最大数量。当存在的日志文件数量超过这个值时,最旧的日志文件将被删除,以便为新的日志留出空间。

    默认为10

    取值范围为2~100

    v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上版本的集群支持该参数。

    容器日志文件在轮换生成新文件时之前的最大值

    container-log-max-size

    每个容器的日志文件的最大大小。当日志文件达到这个大小时,将会触发日志轮换即关闭当前日志文件并创建新的日志文件以继续记录。

    默认为50Mi

    取值范围为1Mi~4096Mi

    v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上版本的集群支持该参数。

    镜像垃圾回收上限百分比

    image-gc-high-threshold

    当kubelet磁盘达到多少时,kubelet开始回收镜像。

    默认为80

    取值范围为1~100

    如果需要禁用镜像垃圾回收,请将该参数设置为100。

    v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上版本的集群支持该参数。

    镜像垃圾回收下限百分比

    image-gc-low-threshold

    回收镜像时当磁盘使用率减少至多少时停止回收。

    默认为70

    取值范围为1~100

    该参数取值不得大于镜像垃圾回收上限百分比。

    v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上版本的集群支持该参数。

    节点内存预留

    system-reserved-mem

    系统内存预留,目的是为OS系统守护进程(如 sshd、udev 等)预留内存资源。

    默认值:自动计算预留内存数,预留值随节点规格变动,具体请参见节点预留资源策略说明

    可选配置如下:
    • 自动计算预留内存数:建议使用自动计算预留内存数,以保证节点的稳定性。

      预留值随节点规格变动,具体请参见节点预留资源策略说明

    • 自定义预留内存数:自定义节点预留内存分布。

    kube-reserved-mem,system-reserved-mem之和小于节点池中节点最小内存规格的50%。

    kube-reserved-mem

    Kubernetes组件内存预留,目的是为Kubernetes系统守护进程(如kubelet、container runtime等)预留内存资源。

    evictionHard 硬驱逐配置项

    memory.available

    节点可用内存值

    固定为100Mi

    关于节点压力驱逐详情请参考节点压力驱逐

    须知:

    驱逐配置项相关配置请谨慎修改,不合理的配置可能会导致节点频繁触发驱逐或节点已过载但未触发驱逐。

    kubelet可识别以下两个特定的文件系统标识符:

    • nodefs:节点的主要文件系统,用于本地磁盘卷、不受内存支持的 emptyDir 卷、日志存储等。 例如,nodefs 包含 /var/lib/kubelet/。
    • imagefs:容器引擎使用的文件系统分区。

    对于共享数据盘,kubelet和容器引擎共用磁盘空间,此类场景建议仅配置nodefs驱逐信号门限或imagefs与nodefs门限配置一致。

    nodefs.available

    Kubelet 使用的文件系统的可用容量的百分比

    默认10%

    取值范围为1%~99%

    nodefs.inodesFree

    Kubelet 使用的文件系统的可用inodes数的百分比

    默认5%

    取值范围为1%~99%

    imagefs.available

    容器运行时存放镜像等资源的文件系统的可用容量的百分比

    默认10%

    取值范围为1%~99%

    imagefs.inodesFree

    容器运行时存放镜像等资源的文件系统的可用inodes数的百分比

    默认为空,不设置

    取值范围为1%~99%

    pid.available

    留给分配 Pod 使用的可用 PID 数的百分比

    默认10%

    取值范围为1%~99%

    evictionSoft 软驱逐配置项

    memory.available

    节点可用内存值。

    设置值要求大于相同参数的硬驱逐配置值,且需同时配置对应的驱逐宽限期(evictionSoftGracePeriod)。

    默认为空,不设置

    取值范围为100Mi~1000000Mi

    nodefs.available

    Kubelet 使用的文件系统的可用容量的百分比。

    设置值要求大于相同参数的硬驱逐配置值,且需同时配置对应的驱逐宽限期(evictionSoftGracePeriod)。

    默认为空,不设置

    取值范围为1%~99%

    nodefs.inodesFree

    Kubelet 使用的文件系统的可用inodes数的百分比。

    设置值要求大于相同参数的硬驱逐配置值,且需同时配置对应的驱逐宽限期(evictionSoftGracePeriod)。

    默认为空,不设置

    取值范围为1%~99%

    imagefs.available

    容器运行时存放镜像等资源的文件系统的可用容量的百分比。

    设置值要求大于相同参数的硬驱逐配置值,且需同时配置对应的驱逐宽限期(evictionSoftGracePeriod)。

    默认为空,不设置

    取值范围为1%~99%

    imagefs.inodesFree

    容器运行时存放镜像等资源的文件系统的可用inodes数的百分比。

    设置值要求大于相同参数的硬驱逐配置值,且需同时配置对应的驱逐宽限期(evictionSoftGracePeriod)。

    默认为空,不设置

    取值范围为1%~99%

    pid.available

    留给分配 Pod 使用的可用 PID 数的百分比。

    设置值要求大于相同参数的硬驱逐配置值,且需同时配置对应的驱逐宽限期(evictionSoftGracePeriod)。

    默认为空,不设置

    取值范围为1%~99%

    表2 kube-proxy组件配置

    名称

    参数

    参数说明

    取值

    修改说明

    系统中最大的连接跟踪表项数目

    conntrack-min

    系统中最大的连接跟踪表项数目。

    可通过以下命令查询:

    sysctl -w net.nf_conntrack_max

    默认:131072

    -

    TCP连接在关闭状态下等待的时间

    conntrack-tcp-timeout-close-wait

    控制TCP连接在关闭状态下等待的时间。

    可通过以下命令查询:

    sysctl -w net.netfilter.nf_conntrack_tcp_timeout_close_wait

    默认:1h0m0s

    -

    表3 网络组件配置(仅CCE Turbo集群可见)

    名称

    参数

    参数说明

    取值

    修改说明

    节点池网卡预热参数配置开关

    enable-node-nic-configuration

    是否开启节点池级别的网卡预热。

    默认:关闭

    节点池网络组件配置开关关闭后,节点池容器网卡动态预热参数将与集群级别保持一致。

    nic-threshold

    nic-threshold

    节点池级别的节点绑定容器网卡数低水位:节点绑定容器网卡数高水位

    默认:0:0

    说明:

    此参数配置废弃中,请采用其他4个容器网卡动态预热参数。

    节点池级别的节点最少绑定容器网卡数

    nic-minimum-target

    保障节点最少有多少张容器网卡绑定在节点上。

    参数值需为正整数。例如10,表示节点最少有10张容器网卡绑定在节点上。当超过节点的容器网卡配额时,后台取值为节点的容器网卡配额。

    默认:10

    建议配置为大部分节点平时日常运行的Pod数。

    节点池级别的节点预热容器网卡上限检查值

    nic-maximum-target

    当节点绑定的容器网卡数超过节点预热容器网卡上限检查值(nic-maximum-target),不再主动预热容器网卡。

    当该参数大于等于节点最少绑定容器网卡数(nic-minimum-target)时,则开启预热容器网卡上限值检查;反之,则关闭预热容器网卡上限值检查。

    参数值需为正整数。例如0,表示关闭预热容器网卡上限值检查。当超过节点的容器网卡配额时,后台取值为节点的容器网卡配额。

    默认:0

    建议配置为大部分节点平时最多运行的Pod数。

    节点池级别的节点动态预热容器网卡数

    nic-warm-target

    当Pod使用完节点最少绑定容器网卡数(nic-minimum-target)后,会始终额外预热多少张容器网卡,只支持数值配置。

    当 节点动态预热容器网卡数(nic-warm-target) + 节点当前绑定的容器网卡数 大于 节点预热容器网卡上限检查值(nic-maximum-target) 时,只会预热nic-maximum-target与节点当前绑定的容器网卡数的差值。

    默认:2

    建议配置为大部分节点日常10s内会瞬时弹性扩容的Pod数。

    节点池级别的节点预热容器网卡回收阈值

    nic-max-above-warm-target

    只有当 节点上空闲的容器网卡数 - 节点动态预热容器网卡数(nic-warm-target) 大于此阈值 时,才会触发预热容器网卡的解绑回收。只支持数值配置。

    • 调大此值会减慢空闲容器网卡的回收,加快Pod的启动速度,但会降低IP地址的利用率,特别是在IP地址紧张的场景,请谨慎调大
    • 调小此值会加快空闲容器网卡的回收,提高IP地址的利用率,但在瞬时大量Pod激增的场景,部分Pod启动会稍微变慢。

    默认:2

    建议配置为大部分节点日常在分钟级时间范围内会频繁弹性扩容缩容的Pod数 - 大部分节点日常10s内会瞬时弹性扩容的Pod数。

    表4 节点池Pod安全组配置(仅CCE Turbo集群可见)

    名称

    参数

    参数说明

    取值

    修改说明

    节点池上Pod默认使用的安全组

    security_groups_for_nodepool

    可填写安全组 ID,不配置则使用集群容器网络的默认安全组,并且最多可同时指定5个安全组ID,中间以英文分号(;)分隔。

    优先级低于SecurityGroup资源对象配置的安全组。

    -

    -

    表5 容器引擎Docker配置(仅使用Docker的节点池可见)

    名称

    参数

    参数说明

    取值

    修改说明

    容器umask值

    native-umask

    默认值为normal,表示启动的容器umask值为0022。

    默认:normal

    不支持修改

    单容器可用数据空间

    docker-base-size

    设置每个容器可使用的最大数据空间。

    默认:0

    不支持修改

    不安全的镜像源地址

    insecure-registry

    是否允许使用不安全的镜像源地址。

    false

    不支持修改

    容器core文件的大小限制

    limitcore

    容器core文件的大小限制,单位是Byte。

    如果不设置大小限制,可设置为infinity。

    默认:5368709120

    -

    容器内句柄数限制

    default-ulimit-nofile

    设置容器中可使用的句柄数上限。

    默认:{soft}:{hard}

    该值大小不可超过节点内核参数nr_open的值,且不能是负数。

    节点内核参数nr_open可通过以下命令获取:

    sysctl -a | grep nr_open

    镜像拉取超时时间

    image-pull-progress-timeout

    如果超时之前镜像没有拉取成功,本次镜像拉取将会被取消。

    默认:1m0s

    该参数在v1.25.3-r0版本开始支持

    单次拉取镜像层的最大并发数

    max-concurrent-downloads

    设置拉取镜像层的最大并发数。

    默认:3

    取值范围为1~20

    该参数如果设置过大,可能导致节点其他业务的网络性能受影响或导致磁盘IO和CPU增高。

    v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上版本的集群支持该参数。

    容器日志文件轮换生成新文件的最大值

    max-size

    容器日志文件开始转储的最大大小。当日志文件达到这个大小时,将会触发日志轮换即关闭当前日志文件并创建新的日志文件以继续记录。

    默认为50Mi

    取值范围为1Mi~4096Mi

    该参数如果设置过小,可能导致重要日志信息的丢失;如果设置过大,则可能占用过多的磁盘空间。

    v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上版本的集群支持该参数。

    容器的日志文件个数上限

    max-file

    容器可以保留的日志文件的最大数量。当存在的日志文件数量超过这个值时,最旧的日志文件将被删除,以便为新的日志留出空间。

    默认:20

    取值范围为2~100

    该参数如果设置过小,可能导致重要日志信息的丢失;如果设置过大,则可能占用过多的磁盘空间。

    v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上版本的集群支持该参数。

    表6 容器引擎Containerd配置(仅使用Containerd的节点池可见)

    名称

    参数

    参数说明

    取值

    修改说明

    单容器可用数据空间

    devmapper-base-size

    设置每个容器可使用的最大数据空间。

    默认:0

    不支持修改

    容器core文件的大小限制

    limitcore

    容器core文件的大小限制,单位是Byte。

    如果不设置大小限制,可设置为infinity。

    默认:5368709120

    -

    容器内句柄数限制

    default-ulimit-nofile

    设置容器中可使用的句柄数上限。

    默认:1048576

    该值大小不可超过节点内核参数nr_open的值,且不能是负数。

    节点内核参数nr_open可通过以下命令获取:

    sysctl -a | grep nr_open

    镜像拉取超时时间

    image-pull-progress-timeout

    如果超时之前镜像没有拉取成功,本次镜像拉取将会被取消。

    默认:1m0s

    该参数在v1.25.3-r0版本开始支持

    insecure_skip_verify

    insecure_skip_verify

    跳过仓库证书验证。

    默认:false

    不支持修改

    单次拉取镜像层的最大并发数

    max-concurrent-downloads

    设置拉取镜像层的最大并发数。

    默认:3

    取值范围为1~20

    该参数如果设置过大,可能导致节点其他业务的网络性能受影响或导致磁盘IO和CPU增高。

    v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上版本的集群支持该参数。

    容器的最大日志行大小

    max-container-log-line-size

    是容器的最大日志行大小(以字节为单位)。超过限制的日志行将被分成多行。

    默认:16384

    取值范围为1~2097152

    配置增大会增加containerd内存消耗。

    v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上版本的集群支持该参数。

  5. 单击“确定”,完成配置操作。
support.huaweicloud.com/usermanual-cce/cce_10_0652.html