上云无忧 > 文档中心 > 腾讯云容器服务 TKE 标准集群 Service 管理 - Service 扩展协议
容器服务 TKE
腾讯云容器服务 TKE 标准集群 Service 管理 - Service 扩展协议

文档简介:
Service 默认支持的协议: Service 是 Kubernetes 暴露应用程序到集群外的一种机制与抽象,您可以通过 Serivce 访问集群内的应用程序。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

Service 默认支持的协议

Service 是 Kubernetes 暴露应用程序到集群外的一种机制与抽象,您可以通过 Serivce 访问集群内的应用程序。
注意
直连场景 下接入时,使用扩展协议没有任何限制,支持 TCP 和 UDP 协议混用。
在非直连场景下,ClusterIP 和 NodePort 模式支持混用。但是,对于 LoadBalancer 类型的 Service,社区目前仅支持同类型协议的使用。
当 LoadBalancer 声明为 TCP 时,端口可以使用扩展协议的能力,将负载均衡的协议变更为 TCP_SSL、HTTP 或 HTTPS。
当 LoadBalancer 声明为 UDP 时,端口可以使用扩展协议的能力,将负载均衡的协议变更为 UDP。

TKE 扩展 Service 转发协议

在原生的 Service 支持的协议规则上,存在部分场景需要在 Service 上同时支持 TCP 和 UDP 混合,且需 Service 能够支持 TCP SSL、HTTP、HTTPS 协议。TKE 针对 LoadBalancer 模式扩展了更多协议的支持。

前置说明

扩展协议仅对 LoadBalancer 模式的 Service 生效。
扩展协议通过注解 Annotation 的形式描述协议与端口的关系。
扩展协议与注解 Annotation 关系如下:
当扩展协议注解中没有覆盖 Service Spec 中描述的端口时,Service Spec 按照用户描述配置。
当扩展协议注解中描述的端口在 Service Spec 中不存在时,忽略该配置。
当扩展协议注解中描述的端口在 Service Spec 中存在时,覆盖用户在 Service Spec 中声明的协议配置。

注解名称

service.cloud.tencent.com/specify-protocol

扩展协议注解示例

TCP_SSL 示例
HTTP 示例
HTTPS 示例
TCP/UDP混合示例
混合示例
QUIC
				
{"80":{"protocol":["TCP_SSL"],"tls":"cert-secret"}}
				
{"80":{"protocol":["HTTP"],"hosts":{"a.tencent.com":{},"b.tencent.com":{}}}}
				
{"80":{"protocol":["HTTPS"],"hosts":{"a.tencent.com":{"tls":"cert-secret-a"},"b.tencent.com":{"tls":"cert-secret-b"}}}}
				
{"80":{"protocol":["TCP","UDP"]}} # 仅直连模式支持,详情见https://cloud.tencent.com/document/product/457/41897
				
{"80":{"protocol":["TCP_SSL","UDP"],"tls":"cert-secret"}} # 仅直连模式支持,详情见https://cloud.tencent.com/document/product/457/41897
				
{"80":{"protocol":["QUIC"],"tls":"cert-secret"}}
注意
TCP_SSL 和 HTTPS 中的字段 cert-secret,表示使用该协议需要指定一个证书,证书是 Opaque 类型的 Secret,Secret 的 Key 为 qcloud_cert_id,Value 是证书 ID。详情见 Ingress 证书配置

扩展协议使用说明

扩展协议YAML使用说明
扩展协议控制台使用说明

				
apiVersion: v1
kind: Service
metadata:
annotations:

service.cloud.tencent.com/specify-protocol: '{"80":{"protocol":["TCP_SSL"],"tls":"cert-secret"}}'

# 若要使用别的协议,修改该键值对的值为上述内容

name: test
....

在创建 Service 时,若以“公网LB”或“内网LB”的形式暴露服务,非 直连模式 情况下,“端口映射”中,仅支持 TCP 和 TCP SSL 一起使用。如下图所示:

当 Service 为“仅在集群内访问(ClusterIP)”或“主机端口访问(NodePort)”模式时,支持任意协议混用。
直连模式,支持任意协议混用。

案例说明

原生 Service 不支持协议混用,TKE 经过特殊改造后,在 直连场景 中支持混合协议的使用。
需注意的是,YAML 中仍使用相同的协议,但可以通过 Annotation 明确每个端口的协议类型。如下示例展示了 80 端口使用 TCP 协议,8080 端口使用 UDP 协议。

		
apiVersion: v1
kind: Service
metadata:
annotations:
service.cloud.tencent.com/direct-access: "true" #TKE Serverless 集群默认是直连模式,TKE 集群请务必先参照文档开启直连模式。

service.cloud.tencent.com/specify-protocol: '{"80":{"protocol":["TCP"]},"8080":{"protocol":["UDP"]}}'

# 指定 80 端口 TCP 协议,8080 端口 UDP 协议。

name: nginx
spec:
externalTrafficPolicy: Cluster
ports:
- name: tcp-80-80
nodePort: 32150
port: 80
protocol: TCP
targetPort: 80
- name: udp-8080-8080
nodePort: 31082
port: 8080
protocol: TCP # 注意,因为 Kubernetes Service Controller 限制,只能使用同类型协议。
targetPort: 8080
selector:
k8s-app: nginx
qcloud-app: nginx
sessionAffinity: None
type: LoadBalancer

相似文档
  • 您可以通过以下 Annotation 注解配置 Service,以实现更丰富的负载均衡的能力。 注解使用方式: apiVersion: v1 kind: Service metadata: annotations: service.kubernetes.io/tke-existed-lbid: lb-6swtxxxx name: test ........
  • 您可以通过以下 Annotation 注解配置 Service,以实现更丰富的负载均衡的能力。 注解使用方式: apiVersion: v1 kind: Service metadata: annotations: service.kubernetes.io/tke-existed-lbid: lb-6swtxxxx name: test ........
  • 各类型 Ingress Controllers 介绍: 应用型 CLB: 应用型 CLB 是基于腾讯云负载均衡器 CLB 实现的 TKE Ingress Controller,可以配置实现不同 URL 访问到集群内不同的 Service。CLB 直接将流量通过 NodePort 转发至 Pod(CLB 直连 Pod 时直接转发到 Pod),一条 Ingress 配置绑定一个 CLB 实例(IP),适合仅需做简单路由管理,对 IP 地址收敛不敏感的场景。
  • Service 提供了基于四层网络的集群内容器服务的暴露能力,Service 暴露类型(例如 ClusterIP、NodePort 或 LoadBalancer)均基于四层网络服务的访问入口,缺少基于七层网络的负载均衡、SSL 或基于名称的虚拟主机等七层网络能力。Ingress 提供七层网络下 HTTP、 HTTPS 协议服务的暴露,及七层网络下的常见能力。
  • 简介: Ingress 是允许访问到集群内 Service 的规则的集合,您可以通过配置转发规则,实现不同 URL 可以访问到集群内不同的 Service。 为了使 Ingress 资源正常工作,集群必须运行 Ingress-controller。TKE 服务在集群内默认启用了基于腾讯云负载均衡器实现的 l7-lb-controller,支持 HTTP、HTTPS,同时也支持在集群内自建其他 Ingress 控制器,您可以根据您的业务需要选择不同的 Ingress 类型。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部