腾讯云容器服务 TKE 具备通过 service.kubernetes.io/tke-existed-lbid: <LoadBalanceId>
注解实现使用已有负载均衡的功能,您可使用该注解指定集群 Service 资源关联的负载均衡实例。还提供了 Service 负载均衡复用功能,即指定多个 Service 使用同一个已有负载均衡,您可参考本文进行设置。
tke-createdBy-flag = yes
标签,Service 会在销毁时删除对应资源。若使用已有 CLB,则不会配置该标签,Service 销毁时也不会删除对应资源。tke-clusterId =
标签,若 ClusterId 正确,则 Service 会在销毁时删除对应标签。tke-clusterId: cls-xxxx
,需自行清理。apiVersion: v1
kind: Service
metadata:
annotations:
service.kubernetes.io/tke-existed-lbid: lb-6swtxxxx
name: nginx-service
spec:
ports:
- name: 80-80-no
port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
说明:
service.kubernetes.io/tke-existed-lbid: lb-6swtxxxx
注解表示该 Service 将使用已有负载均衡进行配置。- 请注意 Service 的类型,需设置为
LoadBalancer
类型。
Service Controller 组件管理负载均衡生命周期时,仅支持购买按量计费的负载均衡资源。当用户需要长时间使用负载均衡时,包年包月计费模式在价格上有一定的优势。在此类场景下,用户就可以独立购买和管理负载均衡,再通过注解控制 Service 使用已有负载均衡,并将负载均衡的生命周期管理从 Service Controller 组件中剥离。
Kubernetes 官方在 Service 的设计中具有限制:一个 Service 下暴露的多个端口协议必须相同。有许多游戏场景下的用户,有在同一个端口同时暴露 TCP 和 UDP 服务的需求,腾讯云负载均衡服务支持在同一个端口上同时监听 UDP 和 TCP 协议,此需求可以通过 Service 负载均衡复用来解决。
例如以下 Service 配置,game-service
被描述为两个 Service 资源,描述的内容除了监听的协议以外基本相同。两个 Service 都通过注解指定使用已有负载均衡 lb-6swtxxxx
。通过 kubectl 将以上资源应用到集群中,就可以实现在同一个负载均衡的端口上暴露多种协议的目的。
apiVersion: v1
kind: Service
metadata:
annotations:
service.kubernetes.io/tke-existed-lbid: lb-6swtxxxx
name: game-service-a
spec:
ports:
- name: 80-80-tcp
port: 80
protocol: TCP
targetPort: 80
selector:
app: game
type: LoadBalancer
------------------------------------------------
apiVersion: v1
kind: Service
metadata:
annotations:
service.kubernetes.io/tke-existed-lbid: lb-6swtxxxx
name: game-service-b
spec:
ports:
- name: 80-80-udp
port: 80
protocol: UDP
targetPort: 80
selector:
app: game
type: LoadBalancer
本页内容是否解决了您的问题?