全局开关配置说明

最近更新时间:2026-04-29 14:11:55

我的收藏
本文档介绍 TKE 接入层组件(service-controller 和 ingress-controller)通过 ConfigMap 管理的全局开关配置。全局开关用于控制集群级别的特性行为,与资源级注解 Service AnnotationIngress Annotation 不同,全局开关对整个集群生效。

概述

全局开关存储在 kube-system 命名空间下的 ConfigMap tke-service-controller-config 中。用户可通过修改该 ConfigMap 来动态开启或关闭集群级别的特性。
ConfigMap 示例:
apiVersion: v1
kind: ConfigMap
metadata:
name: tke-service-controller-config
namespace: kube-system
data:
VERSION: "v2.11.4"
GlobalRouteDirectAccess: "true"
EnableNodeGracefulDeletion: "false"
EnablePodGracefulDeletion: "false"
EnableDefaultModificationProtection: "true"
EnableDefaultDirectAccess: "true"

用户可配置的全局开关

GlobalRouteDirectAccess — GR 直连访问

项目
说明
ConfigMap Key
GlobalRouteDirectAccess
作用
控制集群是否支持 GlobalRoute(GR)直连特性。开启后,使用 GR 网络模式 的 Service/Ingress 支持使用 直连访问模式
支持版本
>= v1.6.0,ConfigMap 可配置。支持配置 truefalse
新建集群默认值
true(默认开启)
注意事项
开启后,Service/Ingress 仍需要配置直连访问模式注解 service.cloud.tencent.com/direct-access: 'true' 或者 ingress.cloud.tencent.com/direct-access: 'true'

EnableNodeGracefulDeletion — 节点优雅删除

项目
说明
ConfigMap Key
EnableNodeGracefulDeletion
作用
控制集群是否开启节点优雅删除特性。开启后,当节点被删除或缩容时,控制器会先将该节点上的所有负载均衡实例(Cloud Load Balancer,CLB) 后端权重调整为 0,等待流量排空后再解绑后端,避免节点下线导致流量中断。
支持版本
>= v2.4.2,支持配置 truefalse
新建集群默认值
false(默认关闭)
注意事项
开启后,节点删除过程中可能需要等待一段时间才能完成,如果节点下线紧急可关闭此开关。此开关仅对 NodePort 模式的 Service 生效。

EnablePodGracefulDeletion — Pod 优雅删除

项目
说明
ConfigMap Key
EnablePodGracefulDeletion
作用
控制集群是否开启 Pod 优雅删除特性。开启后,当 Pod 被删除时,控制器会先将该 Pod 在 CLB 上的权重调整为 0,等待流量排空后再解绑后端,避免 Pod 下线导致请求失败。
支持版本
>= v2.8.0,支持配置 truefalse
新建集群默认值
false(默认关闭)
注意事项
仅在直连访问模式下生效。全局开关作为默认值:开启后,集群内所有直连访问模式的 Service/Ingress 默认启用 Pod 优雅删除。用户可通过资源级注解 service.cloud.tencent.com/enable-grace-deletion 覆盖全局开关,对单个 Service/Ingress 单独开启或关闭。

EnableDefaultModificationProtection — 默认修改保护

项目
说明
ConfigMap Key
EnableDefaultModificationProtection
作用
控制集群内自动创建的 CLB 是否默认开启配置修改保护。开启后,自动创建的 CLB 将无法通过 CLB 控制台或 API 修改负载均衡实例的配置属性,防止误操作。
支持版本
>= v2.11.1,支持配置 truefalse
新建集群默认值
true(v2.11.1 起默认开启)
注意事项
该开关仅对新增的、自动创建 CLB 的资源生效,对存量资源不回溯。用户仍可通过 Service/Ingress 的 modification-protection 注解在资源级别单独控制修改保护属性。

EnableDefaultDirectAccess — 默认直连访问

项目
说明
ConfigMap Key
EnableDefaultDirectAccess
作用
控制集群内新建的 LoadBalancer 类型 Service/Ingress 是否默认开启直连访问模式。开启后,新建的 Service/Ingress 将自动添加直连注解(direct-access: "true"),CLB 直接绑定 Pod IP 而非 NodePort。
支持版本
>= v2.11.0,支持配置 truefalse
新建集群默认值
根据集群网络类型动态决定,TKE GlobalRoute 网络和 TKE VPC-CNI 网络新建集群默认值为 true;其他网络类型新建集群无默认值。
注意事项
该开关仅影响新建的 Service/Ingress,对存量资源不回溯。

只读字段

以下 ConfigMap 字段为系统自动写入的只读字段,用户不应修改
ConfigMap Key
说明
VERSION
当前 controller 的版本号,由系统自动同步。
REUSE_LOADBALANCER
Service 支持复用 CLB 特性是否已开启,v2.5.1 起默认为 true,由组件自动写入。
注意:
系统会监听 ConfigMap 的变更事件,如果只读字段被用户修改,控制器会强制覆盖回正确的值。

常见问题

1. 修改 ConfigMap 后多久生效?

可配置类型的全局开关修改后立即生效,控制器会监听 ConfigMap 的变更事件并动态调整状态,无需重启组件。

2. 全局开关和注解(Annotation)有什么区别?

全局开关是集群级别的配置,对集群内所有资源生效;注解是资源级别的配置,只对单个 Service/Ingress 生效。两者的关系因开关而异:部分开关(如 EnablePodGracefulDeletion)作为默认值,当资源未设置对应注解时以全局开关为准,资源级注解可覆盖全局开关;部分开关(如 EnableDefaultDirectAccess)仅影响新建资源的默认行为。例如 EnablePodGracefulDeletion 开启后,所有直连访问模式的 Service/Ingress 默认启用 Pod 优雅删除,但用户可通过 service.cloud.tencent.com/enable-grace-deletion 注解对单个资源单独关闭。

3. 存量集群升级后,新增的全局开关是否会自动开启?

不会。存量集群升级时,ConfigMap 中已存在的字段不会被覆盖,新增的开关只在 ConfigMap 首次创建时(即新建集群)设置默认值。例如,存量集群升级到 v2.11.1 后,EnableDefaultModificationProtection 全局开关不会自动开启。

4. 如何查看当前集群的全局开关状态?

kubectl get configmap tke-service-controller-config -n kube-system -o yaml

5. 如何修改全局开关?

kubectl edit configmap tke-service-controller-config -n kube-system