更新时间:2024-09-02 GMT+08:00

为负载均衡类型的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命令行创建

以关联已有ELB为例,YAML文件配置如下:
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
表1 关键参数说明

参数

参数类型

描述

kubernetes.io/elb.transparent-client-ip

String

仅TCP/UDP协议的服务支持配置。

  • true:表示开启客户端源IP能力。
  • false:表示关闭客户端源IP能力。