文档首页/ 云容器引擎 CCE/ 用户指南/ 网络/ 服务(Service)/ 负载均衡(LoadBalancer)/ 为负载均衡类型的Service配置HTTP/HTTPS头字段
更新时间:2025-12-31 GMT+08:00
分享

为负载均衡类型的Service配置HTTP/HTTPS头字段

HTTP头字段是指在超文本传输协议(HTTP)的请求和响应消息中的消息头部分。HTTP头部字段可以根据需要自定义,本文介绍可通过HTTP和HTTPS监听器支持的非标准头字段实现的功能特性。
  • 配置HTTP/HTTPS头字段依赖ELB能力,使用该功能前请确认当前区域是否支持使用HTTP/HTTPS头字段,详情请参见HTTP/HTTPS头字段
  • 配置HTTP/HTTPS头字段后,如果您在CCE控制台删除HTTP/HTTPS头字段配置或在YAML中删除对应的annotation,ELB侧的配置将会保留。
表1 头字段开关

头字段

功能开关

功能说明

支持的集群版本

X-Forwarded-Port

获取监听器端口号

开启获取监听器端口号开关,ELB可通过X-Forwarded-Port头字段获取监听器的端口号,传输到后端服务器的报文中。

v1.23.13-r0、v1.25.8-r0、v1.27.5-r0、v1.28.3-r0及以上版本

X-Forwarded-For-Port

获取客户端请求端口号

开启获取客户端请求端口号开关,ELB可通过X-Forwarded-For-Port头字段获取客户端请求的端口号,传输到后端服务器的报文中。

X-Forwarded-Host

重写X-Forwarded-Host

开启后将以客户端请求头的Host重写X-Forwarded-Host传递到后端云服务器。

X-Real-IP

重写X-Real-IP

开启后将以客户端的源IP地址重写X-Real-IP传递到后端服务器。

v1.25.16-r30、v1.27.16-r30、v1.28.15-r20、v1.29.13-r0、v1.30.10-r0、v1.31.6-r0、v1.32.1-r0及以上版本

前提条件

  • 已创建Kubernetes集群,且集群版本满足表1要求。

创建负载均衡并配置HTTP/HTTPS头字段

  1. 登录CCE控制台,单击集群名称进入集群。
  2. 在左侧导航栏中选择“服务”,在右上角单击“创建服务”

    本示例中仅列举配置SNI的必选参数,其余参数保持默认,您可根据需求参考通过控制台创建(新版)进行设置。

  3. 设置基础配置参数。

    参数

    说明

    示例

    访问类型

    选择“负载均衡”

    -

    服务名称

    自定义服务名称,可与工作负载名称保持一致。

    nginx

    命名空间

    工作负载所在命名空间。

    default

    选择器

    您可以添加Pod标签的键值,Service将会根据标签与工作负载的Pod进行关联,将流量导向包含该标签的Pod。

    您也可以引用已有工作负载的标签,单击“引用负载标签”,在弹出的窗口中选择负载,然后单击“确定”

    app:nginx

  4. 设置负载均衡配置参数。

    参数

    说明

    示例

    负载均衡器

    选择弹性负载均衡的类型及创建方式。其中独享型ELB需选择“应用型(HTTP/HTTPS)”“网络型(TCP/UDP/TLS)&应用型(HTTP/HTTPS)”,否则监听器端口将无法启用HTTP/HTTPS。
    • 选择已有:仅支持选择与集群在同一个VPC下的ELB实例。如果没有可选的ELB实例,请单击“创建负载均衡器”跳转到ELB控制台创建。
    • 自动创建:自动创建的负载均衡实例将创建到集群所在的VPC,具体配置如表1所示。
      说明:

      当集群使用共享VPC时,不支持自动创建共享型ELB。

    选择已有“独享型”“网络型(TCP/UDP/TLS)&应用型(HTTP/HTTPS)”实例

  5. 填写访问设置参数。

    参数

    说明

    示例

    服务亲和

    选择将外部流量路由到节点本地或集群范围的端点,详情请参见服务亲和(externalTrafficPolicy)
    • 集群级别:集群下所有节点的IP+节点端口均可以访问到此服务关联的负载,服务访问会因路由跳转导致一定性能损失,且无法获取到客户端源IP。
    • 节点级别:只有通过负载所在节点的IP+节点端口才可以访问此服务关联的负载,服务访问没有因路由跳转导致的性能损失,且可以获取到客户端源IP。

    集群级别

    端口配置

    • 协议:请根据业务的协议类型选择。Service在使用ELB提供的TLS或HTTP协议时,根据Kubernetes中定义的实现方案,需要将该参数设置为TCP并选择对应的监听器前端协议。详细说明请参见Service所用的协议
    • 容器端口:工作负载程序实际监听的端口,需用户确定。例如nginx默认使用80端口。
    • 服务端口:Service使用的端口。
      • 单端口监听:端口范围为1-65535。
      • 区间端口监听:负载均衡服务支持创建某个端口范围的监听器,您最多可为每个监听器添加10个互不重叠的监听端口段。

        为负载均衡服务配置区间端口监听需满足以下条件:

        • 集群版本为v1.23.18-r0、v1.25.13-r0、v1.27.10-r0、v1.28.8-r0、v1.29.4-r0、v1.30.1-r0及以上。
        • 使用独享型ELB且选择TCP/UDP/TLS协议。
        • 该功能依赖ELB能力,使用该功能前请确认ELB在当前区域是否支持四层协议全端口监听和转发。
    • 监听器前端协议:ELB监听器的前端协议,是客户端与负载均衡监听器建立流量分发连接所使用的协议。当选择独享型负载均衡器类型时,包含“应用型(HTTP/HTTPS)”方可支持配置HTTP/HTTPS;包含“网络型(TCP/UDP/TLS)”方可支持配置TLS。
    说明:

    在创建LoadBalancer类型Service时,会自动生成一个随机节点端口号(NodePort)。

    • 协议:TCP协议
    • 容器端口:80
    • 服务端口:80
    • 监听器前端协议:HTTP

  6. 设置负载监听器相关配置参数。

    参数

    说明

    使用限制

    示例

    获取监听器端口号

    开启后可以将ELB实例的监听端口从报文的HTTP头中带到后端云服务器。

    独享型ELB实例的监听器前端协议使用HTTP/HTTPS时支持配置。

    开启

    获取客户端请求端口号

    开启后可以将客户端的源端口从报文的HTTP头中带到后端云服务器。

    独享型ELB实例的监听器前端协议使用HTTP/HTTPS时支持配置。

    开启

    重写X-Forwarded-Host

    开启后将以客户端请求头的Host重写X-Forwarded-Host传递到后端云服务器。

    独享型ELB实例的监听器前端协议使用HTTP/HTTPS时支持配置。

    开启

    重写X-Real-IP

    开启后将以客户端的源IP地址重写X-Real-IP传递到后端服务器。

    独享型ELB实例的监听器前端协议使用HTTP/HTTPS时支持配置。

    开启

  7. 单击“创建”,创建Service。

通过控制台创建(旧版)

  1. 登录CCE控制台,单击集群名称进入集群。
  2. 在左侧导航栏中选择“服务”,在右上角单击“创建服务”
  3. 设置Service参数。本示例中仅列举必选参数,其余参数可根据需求参考通过控制台创建(旧版)进行设置。

    • Service名称:自定义服务名称,可与工作负载名称保持一致。
    • 访问类型:选择“负载均衡”
    • 选择器:添加标签,Service根据标签选择Pod,填写后单击“确认添加”。也可以引用已有工作负载的标签,单击“引用负载标签”,在弹出的窗口中选择负载,然后单击“确定”
    • 负载均衡器:选择弹性负载均衡的类型、创建方式。
      • 类型:本例中仅支持选择“独享型”,且需选择“应用型(HTTP/HTTPS)”“网络型(TCP/UDP/TLS)&应用型(HTTP/HTTPS)”,否则监听器端口将无法启用HTTP或HTTPS。
      • 创建方式:本文中以选择已有ELB为例进行说明,关于自动创建的配置参数请参见表3
    • 端口配置:
      • 协议:请选择TCP协议,选择UDP协议将无法启用HTTP或HTTPS。
      • 服务端口:Service使用的端口,端口范围为1-65535。
      • 容器端口:工作负载程序实际监听的端口,需用户确定。例如nginx默认使用80端口。
      • 监听器前端协议:本例中Service需选择HTTP或HTTPS协议。
    • 监听器配置:
      • 高级配置:选择合适的头字段进行设置。

        配置

        说明

        使用限制

        获取监听器端口号

        开启后可以将ELB实例的监听端口从报文的HTTP头中带到后端云服务器。

        独享型ELB实例的端口启用HTTP/HTTPS时支持配置。

        获取客户端请求端口号

        开启后可以将客户端的源端口从报文的HTTP头中带到后端云服务器。

        独享型ELB实例的端口启用HTTP/HTTPS时支持配置。

        重写X-Forwarded-Host

        开启后将以客户端请求头的Host重写X-Forwarded-Host传递到后端云服务器。

        独享型ELB实例的端口启用HTTP/HTTPS时支持配置。

        重写X-Real-IP

        开启后将以客户端的源IP地址重写X-Real-IP传递到后端服务器。

        独享型ELB实例的端口启用HTTP/HTTPS时支持配置。

    图1 配置HTTP/HTTPS头字段

  4. 单击“确定”,创建Service。

通过kubectl命令行创建

以关联已有ELB为例,Service配置HTTP/HTTPS头字段的YAML文件配置如下:
apiVersion: v1
kind: Service
metadata:
  name: test
  labels:
    app: nginx
  namespace: default
  annotations:
    kubernetes.io/elb.class: performance                              # ELB类型,仅支持performance,即独享型ELB
    kubernetes.io/elb.id: 35cb350b-23e6-4551-ac77-10d5298f5204        # 已有ELB的ID
    kubernetes.io/elb.protocol-port: http:80                          # 使用HTTP协议80端口
    kubernetes.io/elb.x-forwarded-port: 'true'                       # 获取监听器端口号
    kubernetes.io/elb.x-forwarded-for-port: 'true'                   # 获取客户端请求端口号
    kubernetes.io/elb.x-forwarded-host: 'true'                       # 重写X-Forwarded-Host
    kubernetes.io/elb.x-real-ip: 'true'                              # 重写X-Real-IP
spec:
  selector:
    app: nginx
  externalTrafficPolicy: Cluster
  ports:
    - name: cce-service-0
      targetPort: 80
      nodePort: 0
      port: 80
      protocol: TCP
  type: LoadBalancer
  loadBalancerIP: **.**.**.**    # ELB的IP
表2 关键参数说明

参数

参数类型

描述

kubernetes.io/elb.x-forwarded-port

String

ELB可通过X-Forwarded-Port头字段获取监听器的端口号,传输到后端服务器的报文中。

  • true:开启获取监听器端口号开关。
  • false:关闭获取监听器端口号开关。

kubernetes.io/elb.x-forwarded-for-port

String

ELB可通过X-Forwarded-For-Port头字段获取客户端请求的端口号,传输到后端服务器的报文中。

  • true:开启获取客户端请求端口号开关。
  • false:关闭获取客户端请求端口号开关。

kubernetes.io/elb.x-forwarded-host

String

  • true:开启重写X-Forwarded-Host开关,ELB以客户端请求头的Host重写X-Forwarded-Host传递到后端服务器。
  • false:关闭重写X-Forwarded-Host开关,ELB透传客户端的X-Forwarded-Host到后端服务器。

kubernetes.io/elb.x-real-ip

String

  • true:开启重写X-Real-IP开关,ELB以客户端的源IP地址重写X-Real-IP传递到后端服务器
  • false:关闭重写X-Real-IP开关,ELB透传客户端的X-Real-IP到后端服务器。

验证配置

  1. 登录CCE控制台,单击集群名称进入集群。
  2. 在左侧导航栏中选择“服务”,找到新建Service所在行,单击负载均衡名称跳转至ELB控制台查看。
  3. 切换至“监听器”页签,单击新建端口对应的监听器名称,查看配置是否开启。

相关文档