tencent cloud

容器服务

动态与公告
产品动态
公告
产品发布记录
产品简介
产品概述
产品优势
产品架构
应用场景
产品功能
基本概念
原生 Kubernetes 名词对照
容器服务高危操作
地域和可用区
开源组件
购买指南
购买指引
购买 TKE 标准集群
购买原生节点
购买超级节点
快速入门
新手指引
快速创建一个标准集群
入门示例
容器应用部署 Check List
集群配置
标准集群概述
集群管理
网络管理
存储管理
节点管理
GPU 资源管理
远程终端
应用配置
工作负载管理
服务和配置管理
组件和应用管理
弹性伸缩
容器登录方式
可观测配置
运维可观测性
成本洞察和优化
调度配置
调度组件概述
资源利用率优化调度
业务优先级保障调度
Qos 感知调度
安全和稳定性
容器服务安全组设置
身份验证和授权
应用安全
多集群管理
计划升级
备份中心
云原生服务指南
云原生 etcd
Prometheus 监控服务
TKE Serverless 集群指南
TKE 注册集群指南
实践教程
集群
Serverless 集群
调度
安全
服务部署
网络
发布
日志
监控
运维
Terraform
DevOps
弹性伸缩
容器化
微服务
成本管理
混合云
AI
故障处理
节点磁盘爆满排障处理
节点高负载排障处理
节点内存碎片化排障处理
集群 DNS 解析异常排障处理
集群 Kube-Proxy 异常排障处理
集群 API Server 网络无法访问排障处理
Service&Ingress 网络无法访问排障处理
Service&Ingress 常见报错和处理
Nginx Ingress 偶现 Connection Refused
CLB Ingress 创建报错排障处理
Pod 网络无法访问排查处理
Pod 状态异常与处理措施
授权腾讯云售后运维排障
CLB 回环问题
API 文档
History
Introduction
API Category
Making API Requests
Elastic Cluster APIs
Resource Reserved Coupon APIs
Cluster APIs
Third-party Node APIs
Relevant APIs for Addon
Network APIs
Node APIs
Node Pool APIs
TKE Edge Cluster APIs
Cloud Native Monitoring APIs
Scaling group APIs
Super Node APIs
Other APIs
Data Types
Error Codes
TKE API 2022-05-01
常见问题
TKE 标准集群
TKE Serverless 集群
运维类
隐患处理
服务类
镜像仓库类
远程终端类
事件类
资源管理类
服务协议
TKE Service Level Agreement
TKE Serverless Service Level Agreement
联系我们
词汇表

Service 负载均衡配置

PDF
聚焦模式
字号
最后更新时间: 2025-12-22 10:15:18

TkeServiceConfig

TkeServiceConfig 是腾讯云容器服务提供的自定义资源 CRD, 通过 TkeServiceConfig 能够帮助您更灵活的配置 LoadBalancer 类型的 Service ,及管理其中负载均衡的各种配置。

使用场景

Service YAML 的语义无法定义的负载均衡的参数和功能,可以通过 TkeServiceConfig 进行配置。

配置说明

使用 TkeServiceConfig 能够帮您快速进行负载均衡器的配置。通过 Service 注解 service.cloud.tencent.com/tke-service-config:<config-name>,您可以指定目标配置并应用到 Service 中。
注意:
TkeServiceConfig 资源需要与 Service 处于同一命名空间。
TkeServiceConfig 并不会帮您直接配置并修改协议和端口,您需要在配置中描述协议和端口以便指定配置下发的监听器。在一个 TkeServiceConfig 中可以声明多组监听器配置,目前主要针对负载均衡的健康检查以及对后端访问提供配置。 通过指定协议和端口,配置能够被准确的下发到对应监听器:
spec.loadBalancer.l4Listeners.protocol:四层协议
spec.loadBalancer.l4Listeners.port:监听端口

Service 与 TkeServiceConfig 关联行为

1. 创建 LoadBalancer 模式 Service 时,设置注解 service.cloud.tencent.com/tke-service-config-auto: "true",将自动创建 <ServiceName>-auto-service-config。您也可以通过 service.cloud.tencent.com/tke-service-config:<config-name> 直接指定您自行创建的 TkeServiceConfig。两个注解不可同时使用,且手动指定的<config-name>不能以 -auto-service-config-auto-ingress-config 为后缀。
2. 其中自动创建的 TkeServiceConfig 存在以下同步行为:
更新 Service 资源时,新增若干四层监听器时,如果该监听器或转发规则没有对应的 TkeServiceConfig 配置片段。Service-Controller 将主动添加 TkeServiceConfig 对应片段。
删除若干四层监听器时,Service-controller 组件将主动删除 TkeServiceConfig 对应片段。
删除 Service 资源时,级联删除该 TkeServiceConfig。
用户修改 Service 默认的 TkeServiceConfig,TkeServiceConfig 内容同样会被应用到负载均衡。
3. 您也可以参考下列 TkeServiceConfig 完整配置参考自行创建需要的 CLB 配置,Service 通过注解:service.cloud.tencent.com/tke-service-config:<config-name> 引用该配置。
4. 其中您手动创建的 TkeServiceConfig 存在以下同步行为:
当用户在 Service 中添加配置注解时,负载均衡将会立即进行设置同步。
当用户在 Service 中删除配置注解时,负载均衡将会保持不变。
修改 TkeServiceConfig 配置时,引用该配置 Service 的负载均衡将会根据新的 TkeServiceConfig 进行设置同步。
Service 的监听器未找到对应配置时,该监听器将不会进行修改。
Service 的监听器找到对应配置时,若配置中没有声明的属性,该监听器将不会进行修改。

完整配置参考

apiVersion: cloud.tencent.com/v1alpha1
kind: TkeServiceConfig
metadata:
name: sample # 配置的名称
namespace: default # 配置的命名空间
spec:
loadBalancer:
l4Listeners: # 四层规则配置,适用于Service的监听器配置。
- protocol: TCP # 协议端口锚定Service的四层规则。必填,枚举值:TCP|UDP|TCP_SSL|QUIC。
port: 80 # 必填,可选值:1~65535。
deregisterTargetRst: true # 选填,布尔值。双向 RST 开关,建议非直连类型 Service 启用,非直连 Service 的连接会经过 NodePort 中转,不启用双向 RST 可能导致下线集群节点后造成业务中断。
session: # 会话保持相关配置。选填
enable: true # 是否开启会话保持。必填,布尔值
sessionExpireTime: 100 # 会话保持的时间。选填,默认值:30,可选值:30~3600,单位:秒。
healthCheck: # 健康检查相关配置。选填
enable: true # 是否开启健康检查。必填,布尔值
checkType: "TCP" # 健康检查类型。选填,枚举值:TCP|HTTP|CUSTOM(仅适用于TCP/UDP监听器,其中UDP监听器只支持CUSTOM;如果使用自定义健康检查功能,则必传)。
checkPort: 80 # 健康检查端口,选填。默认为后端服务的端口,除非您希望指定特定端口,否则建议留空。(仅适用于TCP/UDP监听器)。
intervalTime: 10 # 健康检查探测间隔时间。选填,默认值:5,可选值:5~300,单位:秒。
healthNum: 2 # 健康阈值,表示当连续探测几次健康则表示该转发正常。选填,默认值:3,可选值:2~10,单位:次。
unHealthNum: 3 # 不健康阈值,表示当连续探测几次健康则表示该转发异常。选填,默认值:3,可选值:2~10,单位:次。
timeout: 10 # 健康检查的响应超时时间,响应超时时间要小于检查间隔时间。选填,默认值:2,可选值:2~60,单位:秒。
httpCode: 31 # 健康检查状态码,选填,默认值:31,可选值:1~31。仅适用于HTTP/HTTPS转发规则、TCP监听器的HTTP健康检查方式。 1 表示探测后返回值 1xx 代表健康,2 表示返回 2xx 代表健康,4 表示返回 3xx 代表健康,8 表示返回 4xx 代表健康,16 表示返回 5xx 代表健康。若希望多种返回码都可代表健康,则将相应的值相加。
httpCheckPath: "/" # 健康检查路径,选填。仅适用于HTTP/HTTPS转发规则、TCP监听器的HTTP健康检查方式。
httpCheckDomain: "example.com" # 健康检查域名,选填,不能为空值。默认为七层规则域名(仅适用于HTTP/HTTPS转发规则、TCP监听器的HTTP健康检查方式)。
httpCheckMethod: "HEAD" # 健康检查方法(仅适用于HTTP/HTTPS转发规则、TCP监听器的HTTP健康检查方式),默认值:HEAD,可选值HEAD或GET。
httpVersion: "HTTP/1.1" # 自定义探测相关参数。健康检查协议CheckType的值取HTTP时,必传此字段,代表后端服务的HTTP版本:HTTP/1.0、HTTP/1.1;(仅适用于TCP监听器)。
sourceIpType: 0 # 健康检查探测来源。0(VIP为源IP) 1(100.64为源IP)。对于域名化clb默认值为1且只能为1,对于非域名化的clb默认值不一定,可在clb控制台配置页面看能否看到VIP探测方式,如能看到默认值为0,否则为1,更多详情查看 https://www.tencentcloud.com/document/product/214/53639
scheduler: WRR # 请求转发方式配置。WRR、LEAST_CONN 分别表示按权重轮询、最小连接数。选填,枚举值:WRR|LEAST_CONN。
proxyProtocol:
enable: false # 启用 ProxyProtocol,默认关闭。

示例

Deployment 示例:jetty-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: jetty
name: jetty-deployment
namespace: default
spec:
progressDeadlineSeconds: 600
replicas: 3
revisionHistoryLimit: 10
selector:
matchLabels:
app: jetty
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: jetty
spec:
containers:
- image: jetty:9.4.27-jre11
imagePullPolicy: IfNotPresent
name: jetty
ports:
- containerPort: 80
protocol: TCP
- containerPort: 443
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30

Service 示例:jetty-service.yaml

apiVersion: v1
kind: Service
metadata:
annotations:
service.cloud.tencent.com/tke-service-config: jetty-service-config
# 指定已有的 tke-service-config
# service.cloud.tencent.com/tke-service-config-auto: "true"
# 自动创建 tke-service-config
name: jetty-service
namespace: default
spec:
ports:
- name: tcp-80-80
port: 80
protocol: TCP
targetPort: 80
- name: tcp-443-443
port: 443
protocol: TCP
targetPort: 443
selector:
app: jetty
type: LoadBalancer
该示例中包含以下配置:
Service 为公网 LoadBalancer 类型。声明了两个 TCP 服务,一个在80端口,一个在443端口。
使用了 jetty-service-config 负载均衡配置。

TkeServiceConfig 示例:jetty-service-config.yaml

apiVersion: cloud.tencent.com/v1alpha1
kind: TkeServiceConfig
metadata:
name: jetty-service-config
namespace: default
spec:
loadBalancer:
l4Listeners:
- protocol: TCP
port: 80
deregisterTargetRst: true
healthCheck:
enable: false
- protocol: TCP
port: 443
session:
enable: true
sessionExpireTime: 3600
healthCheck:
enable: true
intervalTime: 10
healthNum: 2
unHealthNum: 2
timeout: 5
scheduler: WRR
该示例中包含以下配置: 名称为 jetty-service-config。且在四层监听器配置中,声明了以下两段配置:
1. 80端口的 TCP 监听器将会被配置。关闭健康检查。
2. 443端口的 TCP 监听器将会被配置。
打开健康检查,健康检查间隔调整为10s,健康阈值2次,不健康阈值2次,超时5s。
打开会话保持功能,会话保持的超时时间设置为3600s。
转发策略配置为:按权重轮询。

kubectl 配置命令

$ kubectl apply -f jetty-deployment.yaml
$ kubectl apply -f jetty-service.yaml
$ kubectl apply -f jetty-service-config.yaml

$ kubectl get pods
NAME READY STATUS RESTARTS AGE
jetty-deployment-8694c44b4c-cxscn 1/1 Running 0 8m8s
jetty-deployment-8694c44b4c-mk285 1/1 Running 0 8m8s
jetty-deployment-8694c44b4c-rjrtm 1/1 Running 0 8m8s

$ kubectl get service jetty-service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
jetty LoadBalancer 10.127.255.209 150.158.220.237 80:31338/TCP,443:32373/TCP 2m47s

# 获取TkeServiceConfig配置列表
$ kubectl get tkeserviceconfigs.cloud.tencent.com
NAME AGE
jetty-service-config 52s

# 更新修改TkeServiceConfig配置
$ kubectl edit tkeserviceconfigs.cloud.tencent.com jetty-service-config
tkeserviceconfig.cloud.tencent.com/jetty-service-config edited


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈