更新时间:2024-08-17 GMT+08:00

Kubernetes原生配置

为您提供典型的原生配置选项,您可以在此设置kube-apiserver、kube-controller等社区原生管理组件的配置,为您的集群在海量场景下提供最佳的云原生体验。

集群服务器配置(kube-apiserver)

容器故障迁移默认容忍周期

容器故障迁移默认容忍周期配置默认对集群中所有的容器生效,您也可以为指定Pod进行差异化容忍配置,此时将以Pod配置的容忍时长为准。

请合理设置容忍时间配置,否则可能出现以下问题:

  • 配置过小:在网络抖动等短时故障场景下,容器可能会频繁迁移而影响业务。
  • 配置过大:在节点故障时,容器可能长时间无法迁移,导致业务受损。
表1 容器故障迁移默认容忍周期配置参数说明

名称

参数

说明

取值

容器迁移对节点不可用状态的容忍时间

default-not-ready-toleration-seconds

表示节点处于NotReady状态下的容忍时间。当节点出现异常,变为不可用状态时,容器将在该容忍时间后自动驱逐,默认为300s。

默认:300s

容器迁移对节点无法访问状态的容忍时间

default-unreachable-toleration-seconds

表示节点处于unreachable状态下的容忍时间。当环境出现异常,例如节点无法访问(如节点网络异常)时,容器将在该容忍时间后自动驱逐,默认为300s。

默认:300s

准入控制器插件配置

Kubernetes支持开启一些准入控制插件,可以在集群对Kubernetes API对象(如Pods、Services、Deployments等)进行修改操作前,进行相应的约束与控制。

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

表2 准入控制器插件配置参数说明

名称

参数

说明

取值

节点限制插件

enable-admission-plugin-node-restriction

节点限制插件限制了节点的 kubelet 只能操作当前节点的对象,增强了在高安全要求或多租户场景下的隔离性。详细信息请参考官方文档

开启/关闭

Pod节点选择器插件

enable-admission-plugin-pod-node-selector

Pod节点选择器插件允许集群管理员通过命名空间注释设置默认节点选择器,帮助约束 Pod 可以运行的节点,并简化配置。

开启/关闭

Pod容忍度限制插件

enable-admission-plugin-pod-toleration-restriction

Pod容忍度限制插件允许通过命名空间设置 Pod 的容忍度的默认值和限制,为集群管理者提供了对 Pod 调度的精细控制,以保护关键资源。

开启/关闭

服务账号令牌卷投射

kubelet可以将ServiceAccount令牌投射到Pod中。您可以指定令牌的期望属性,例如API受众。当Pod或ServiceAccount被删除时,该令牌也将对API无效。详细信息请参考官方文档

v1.23.16-r0、v1.25.11-r0、v1.27.8-r0、v1.28.6-r0、v1.29.2-r0及以上版本的集群支持该参数。

表3 服务账号令牌卷投射配置参数说明

名称

参数

说明

取值

API 受众

api-audiences

为ServiceAccount令牌定义其受众。Kubernetes 用于服务账户令牌的身份验证组件,会验证API请求中使用的令牌是否指定了合法的受众。

配置建议:根据集群服务间通信的需求,精确配置受众列表。此举确保服务账户令牌仅在授权的服务间进行认证使用,提升安全性。

说明:

不正确的配置可能导致服务间认证通信失败,或令牌的验证过程出现错误。

默认值:"https://kubernetes.default.svc.cluster.local"

支持配置多个值,用英文逗号隔开。

服务账户令牌发行者

service-account-issuer

指定发行服务账户令牌的实体标识符。这是在服务账户令牌的负载(Payload)中的 'iss' 字段所标识的值。

配置建议:请确保所配置的发行者(Issuer)URL在集群内部可被访问,并且可被集群内部的认证系统所信任。

说明:

若设置了一个不可信或无法访问的发行者 URL,可能会导致基于服务账户的认证流程失败。

默认值:"https://kubernetes.default.svc.cluster.local"

支持配置多个值,用英文逗号隔开。

集群控制器配置(kube-controller-manager)

控制器公共配置

  • 控制器性能配置:用于设置控制器访问kube-api-server的性能参数配置。

    请合理设置控制器性能配置,否则可能出现以下问题:

    • 配置过小:可能会触发客户端限流,对控制器性能产生影响。
    • 配置过大:可能会导致kube-apiserver过载。
    表4 控制器性能配置参数说明

    名称

    参数

    说明

    取值

    控制器访问kube-apiserver的QPS

    kube-api-qps

    与kube-apiserver通信的QPS,即每秒查询率。

    • 集群规格为1000节点以下时,默认值为100
    • 集群规格为1000节点及以上时,默认值为200

    控制器访问kube-apiserver的突发流量上限

    kube-api-burst

    与kube-apiserver通信的突发流量上限。

    • 集群规格为1000节点以下时,默认值为100
    • 集群规格为1000节点及以上时,默认值为200
  • 资源对象处理并发配置:允许同时同步的资源对象的数量。配置数量越大,管理响应越快,但 CPU(和网络)负载也越高。

    请合理设置资源对象处理并发配置,否则可能出现以下问题:

    • 配置过小:可能导致管理器处理响应慢。
    • 配置过大:会对集群管控面造成压力,产生过载风险。
    表5 资源对象处理并发配置参数说明

    名称

    参数

    说明

    取值

    Deployment

    concurrent-deployment-syncs

    可以并发同步的Deployment对象个数。数值越大意味着对Deployment的响应越及时,同时也意味着更大的CPU(和网络带宽)压力。

    默认:5

    Endpoint

    concurrent-endpoint-syncs

    可以并发同步的Endpoints对象个数。数值越大意味着更新Endpoints越快,同时也意味着更大的CPU(和网络)压力。

    默认:5

    GC回收

    concurrent-gc-syncs

    可以并发同步的垃圾收集(Garbage Collector)工作线程个数。

    默认:20

    Job

    concurrent-job-syncs

    可以并发同步的Job对象个数。较大的数值意味着对Job的响应越及时,不过也意味着更多的CPU(和网络)占用。

    默认:5

    CronJob

    concurrent-cron-job-syncs

    可以并发同步的CronJob对象个数。较大的数值意味着对CronJob的响应越及时,不过也意味着更多的CPU(和网络)占用。

    默认:5

    Namespace

    concurrent-namespace-syncs

    可以并发同步的Namespace对象个数。较大的数值意味着对Namespace的响应越及时,不过也意味着更多的CPU(和网络)占用。

    默认:10

    Replicaset

    concurrent-replicaset-syncs

    可以并发同步的ReplicaSet个数。数值越大,副本管理的响应速度越快,同时也意味着更多的CPU(和网络)占用。

    默认:5

    ResourceQuota

    concurrent-resource-quota-syncs

    可以并发同步的ResourceQuota对象个数。数值越大,配额管理的响应速度越快,不过对CPU(和网络)的占用也越高。

    默认:5

    Servicepace

    concurrent-service-syncs

    可以并发同步的Service对象个数。数值越大,服务管理的响应速度越快,不过对CPU(和网络)的占用也越高。

    默认:10

    ServiceAccountToken

    concurrent-serviceaccount-token-syncs

    可以并发同步的服务账号令牌对象个数。数值越大,令牌生成的速度越快,不过对CPU(和网络)的占用也越高。

    默认:5

    TTLAfterFinished

    concurrent-ttl-after-finished-syncs

    可以并发同步的ttl-after-finished-controller线程个数。

    默认:5

    RC

    concurrent_rc_syncs

    可以并发同步的副本控制器对象个数。数值越大,副本管理操作越快,不过对CPU(和网络)的占用也越高。

    说明:

    该参数仅在v1.19及以下版本集群中使用。

    默认:5

    RC

    concurrent-rc-syncs

    可以并发同步的副本控制器对象个数。数值越大,副本管理操作越快,不过对CPU(和网络)的占用也越高。

    说明:

    该参数仅在v1.21至v1.23版本集群中使用。v1.25版本后,该参数弃用(正式弃用版本为v1.25.3-r0)。

    默认:5

    HPA并发处理数

    concurrent-horizontal-pod-autoscaler-syncs

    允许并发执行的HPA弹性伸缩数量。 数值越大,HPA弹性伸缩响应越快,不过对CPU(和网络)的占用也越高。

    该参数仅v1.27及以上版本集群支持。

    默认:5

    取值范围为1-50

节点生命周期控制器(node-lifecycle-controller)配置

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

表6 负载弹性伸缩控制器配置参数说明

名称

参数

说明

取值

可用区亚健康阈值

unhealthy-zone-threshold

当可用区故障节点规模达到指定比例时被认定为不健康,针对不健康的区域,故障节点业务的迁移频率会降级,避免规模故障场景下大规模迁移操作产生更坏的影响。

说明:

比例配置过大可能导致区域在规模故障场景下仍尝试执行大规模迁移动作,导致集群过载等风险。

默认:0.55

节点迁移速率

node-eviction-rate

当某区域健康时,在节点故障的情况下每秒删除Pod的节点数。该值默认设置为0.1,代表每10秒钟内至多从一个节点驱逐Pod。

说明:

结合集群规模合理设置,建议按比例折算后每批迁移Pod数量不超过300。

迁移速率设置过大可能引入集群过载风险,同时每批迁移重调度的Pod过多,大量Pod无法及时调度,影响整体故障恢复时间。

默认:0.1

次级节点迁移速率

secondary-node-eviction-rate

当某区域不健康时,在节点故障的情况下每秒删除Pod的节点数。该值默认设置为0.01,代表每100秒钟内至多从一个节点驱逐Pod。

说明:

配合node-eviction-rate设置,一般建议设置为node-eviction-rate的十分之一。

区域亚健康场景迁移速率设置过大无实际意义,且可能引入集群过载风险。

默认:0.01

大规模集群大小阈值

large-cluster-size-threshold

集群内节点数量大于此参数时,集群被判断为大规模集群。

配置建议:在拥有大量节点的集群中,适当增加此阈值可以帮助提高控制器的性能和响应速度。对于规模较小的集群,保持默认值即可。在调整此参数时,建议先在测试环境中验证其对性能的影响,然后再在生产环境中应用。

说明:

被视为大型集群时,kube-controller-manager 会进行特定配置调整。这些配置用来优化大规模集群性能。因此阈值如果过低,规模小的集群用上的大集群的配置,反而降低性能。

默认:50

负载弹性伸缩控制器(horizontal-pod-autoscaler-controller)配置

表7 负载弹性伸缩控制器配置参数说明

名称

参数

说明

取值

Pod水平伸缩同步的周期

horizontal-pod-autoscaler-sync-period

水平Pod扩缩器对Pod进行弹性伸缩的周期。配置越小弹性伸缩器反应越及时,同时CPU负载也越高。

说明:

请合理设置该参数,周期配置过长可能导致控制器处理响应慢;周期配置过短则会对集群管控面造成压力,产生过载风险。

默认:15s

Pod水平伸缩容忍度

horizontal-pod-autoscaler-tolerance

该配置影响控制器对伸缩策略相关指标反映的灵敏程度,当配置为0时,指标达到策略阈值时立即触发弹性。

配置建议:如业务资源占用随时间的“突刺”特征明显,建议保留一定的容忍度值,避免因业务短时资源占用飚高导致预期之外的弹性行为。

默认:0.1

HPA CPU初始化期间

horizontal-pod-autoscaler-cpu-initialization-period

这一时段定义了纳入HPA计算的CPU使用数据仅来源于已经达到就绪状态并完成了最近一次指标采集的Pods。它的目的是在Pod启动初期过滤掉不稳定的CPU使用数据,进而防止基于瞬时峰值做出错误的扩缩容决策。

配置建议:如果您观察到Pods在启动阶段的CPU使用率波动导致HPA作出错误的扩展决策,增大此值可以提供一个CPU使用率稳定化的缓冲期。

说明:

请合理设置该参数,设置值过低可能导致基于CPU峰值做出过度反应的扩容;而设置得过高则可能在实际需要扩容时造成延迟反应。

v1.23.16-r0、v1.25.11-r0、v1.27.8-r0、v1.28.6-r0、v1.29.2-r0及以上版本的集群支持该参数。

默认:5分钟

HPA 初始就绪状态延迟

horizontal-pod-autoscaler-initial-readiness-delay

在CPU初始化期之后,此时间段允许HPA以一个较宽松的标准筛选CPU度量数据。也就是说,这段时间内,即使Pods的就绪状态有所变化,HPA也会考虑它们的CPU使用数据进行扩缩容。这有助于在Pod状态频繁变化时,确保CPU使用数据被持续追踪。

配置建议:如果Pods在启动后的就绪状态发生波动,并且您需要避免此波动导致HPA的误判,适当增加此值可以使HPA得到更全面的CPU使用数据。

说明:

请合理设置该参数,值设置过低可能会在Pod刚进入就绪状态时,因CPU数据波动导致不恰当的扩容行为;而设置过高则可能导致在需要快速反应时HPA无法立即做出决策。

v1.23.16-r0、v1.25.11-r0、v1.27.8-r0、v1.28.6-r0、v1.29.2-r0及以上版本的集群支持该参数。

默认:30s

Pod回收控制器(pod-garbage-collector-controller)配置

表8 Pod回收控制器配置参数说明

名称

参数

说明

取值

终止状态Pod触发回收的数量阈值

terminated-pod-gc-threshold

在Pod GC开始删除终止状态(terminated)的Pod之前,系统允许存在终止状态的Pod数量。

说明:

请合理设置该参数,配置过大时,集群中可能存在大量终止状态的Pod,影响相关List查询请求性能,产生集群过载风险。

默认:1000

取值范围为10-12500

资源配额控制器(resource-quota-controller)配置

在高并发场景下(如批量创建Pod),配额管理机制可能导致部分请求因冲突而失败,除非必要不建议启用该功能。如启用,请确保请求客户端具备重试机制。

表9 资源配额控制器配置参数说明

名称

参数

说明

取值

启用资源配额管理

enable-resource-quota

通过配额管理功能,用户可以对命名空间或相关维度下的各类负载(Deployment、Pod等)数量以及资源(CPU、Memory)上限进行控制。命名空间通过ResourceQuota对象进行配额限制。

  • 关闭(false):不自动创建ResourceQuota对象。
  • 开启(true):自动创建ResourceQuota对象。ResourceQuota的默认取值请参见设置资源配额及限制

默认:关闭(false)