为负载均衡类型的Service配置获取客户端IP
使用共享型ELB创建负载均衡类型的服务时,您可以通过配置annotation配置ELB的监听器获取客户端IP的能力。
- 使用独享型ELB时默认开启获取客户端IP,无需配置。
- 配置获取客户端IP后,如果您在YAML中删除对应的annotation,ELB侧的配置将会保留。
前提条件
- 已创建Kubernetes集群,且集群版本满足以下要求:
- v1.23集群:v1.23.17-r0及以上版本
- v1.25集群:v1.25.12-r0及以上版本
- v1.27集群:v1.27.9-r0及以上版本
- v1.28集群:v1.28.7-r0及以上版本
- v1.29集群:v1.29.3-r0及以上版本
- 其他更高版本的集群
- 您需要使用kubectl连接到集群,详情请参见通过kubectl连接集群。
约束与限制
在CCE Standard集群中,当Service服务亲和类型配置成节点级别(即externalTrafficPolicy配置为Local)时该配置生效,配置集群级别(即externalTrafficPolicy配置为Cluster)时不生效。
在CCE Turbo集群中,Service服务亲和类型不支持配置成节点级别(即externalTrafficPolicy不支持配置为Local),该配置无法生效。
通过kubectl命令行创建
apiVersion: v1
kind: Service
metadata:
name: nginx
annotations:
kubernetes.io/elb.id: <your_elb_id> # ELB ID,替换为实际值
kubernetes.io/elb.class: union # 负载均衡器类型
kubernetes.io/elb.transparent-client-ip: 'true' # 开启获取客户端源IP
spec:
selector:
app: nginx
externalTrafficPolicy: Local
ports:
- name: service0
port: 80
protocol: TCP
targetPort: 80
type: LoadBalancer
参数 |
参数类型 |
描述 |
---|---|---|
kubernetes.io/elb.transparent-client-ip |
String |
仅TCP/UDP协议的服务支持配置。
|