启用 CLB 直连
概述
流量从 CLB 转发到 Nginx Ingress 这段链路可以直连(不走 NodePort),带来更好的性能,也可以实现获取真实源 IP 的需求。
如果你使用的 TKE Serverless 集群或者能确保所有 Nginx Ingress Pod 调度到超级节点,这时本身就是直连的,无需进行额外的配置。
其它情况下,这段链路中间默认会走 NodePort,以下是启用直连的方法(根据自己的集群环境对号入座)。
GlobalRouter+VPC-CNI 网络模式启用直连
如果集群网络模式是 GlobalRouter,且启用了 VPC-CNI:
这种情况建议为 Nginx Ingress 声明用 VPC-CNI 网络,同时启用 CLB 直连,values.yaml
配置方法:
controller:
podAnnotations:
tke.cloud.tencent.com/networks: tke-route-eni # 声明使用 VPC-CNI 网络
resources: # resources 里声明使用弹性网卡
requests:
tke.cloud.tencent.com/eni-ip: "1"
limits:
tke.cloud.tencent.com/eni-ip: "1"
service:
annotations:
service.cloud.tencent.com/direct-access: "true" # 启用 CLB 直通
GlobalRouter 网络模式启用直连
如果集群网络 是 GlobalRouter,但没有启用 VPC-CNI,建议最好是为集群开启 VPC-CNI,然后按照上面的方法启用 CLB 直连。如果实在不好开启,且腾讯云账号是带宽上移类型(参考账号类型说明),也可以有方法启用直连,只是有一些限制 (具体参考 GlobalRouter 直连使用限制)。
如果确认满足条件且接受使用限制,参考以下步骤启用直连:
- 修改 configmap 开启 GlobalRouter 集群维度的直连能力:
kubectl edit configmap tke-service-controller-config -n kube-system
将 GlobalRouteDirectAccess
置为 true:
- 配置
values.yaml
启用 CLB 直连:
controller:
service:
annotations:
service.cloud.tencent.com/direct-access: "true" # 启用 CLB 直通
VPC-CNI 网络模式启用直连
如果集群网络本身就是 VPC-CNI,那就比较简单了,直接配置 values.yaml
启用 CLB 直连即可:
controller:
service:
annotations:
service.cloud.tencent.com/direct-access: "true" # 启用 CLB 直通