You need to enable JavaScript to run this app.
导航

使用 Annotation 配置负载均衡服务

最近更新时间2024.04.26 18:06:36

首次发布时间2022.02.08 17:53:49

服务(Serivce)支持通过注解(Annotation)实现更加丰富的四层负载均衡(CLB)能力。本文主要介绍使用 Annotation 配置负载均衡服务的主要场景和配置方法。

背景信息

当您在容器服务集群中配置 Service 时,允许通过配置 YAML 文件中特定的注解,新建或复用四层负载均衡实例。

新建和复用四层负载均衡实例的主要区别如下表所示。

资源对象新建 CLB复用 CLB

CLB

  • 控制器会根据 Annotation 配置,自动创建 CLB、监听器和后端服务器组。
  • 删除 Service 时,控制器会删除自动创建的 CLB。
  • 在 Annotation 配置service.beta.kubernetes.io/volcengine-loadbalancer-id中指定复用 CLB 实例的 ID。
  • 控制器会根据 Annotation 中的其他配置,为 CLB 创建监听器和后端服务器组。
  • 删除 Service 时,控制器会删除为复用 CLB 创建的监听器和后端服务器组,不会删除 CLB 实例。

说明

  • 仅支持复用通过负载均衡控制台创建的 CLB,不支持复用通过容器服务 LoadBalancer 类型的 Service 自动创建的 CLB。
  • CLB 在 VPC 内提供负载均衡,复用的 CLB 需要和集群处于同一个 VPC。

监听器

  • 控制器会根据 Annotation 的配置,自动创建监听器和后端服务器组。
  • 删除 Service 时,控制器会删除创建的监听器和后端服务器组。
  • 控制器会根据 Annotation 的配置,自动创建监听器和后端服务器组。
  • 控制器无法在指定复用 CLB 上已经存在的端口上创建监听器。

LoadBalancer 类型的 Service 会在如下场景触发调谐:

  • 创建/删除/修改 Service 时,后端的变化(例如:Pod IP 改变,新增/下线 Pod)。
  • 控制器的 Pod 重启。

因此,需要注意以下事项:

  • 在负载均衡控制台手动修改 CLB 实例配置时,控制器无法感知。因此,控制器无法将负载均衡控制台中的修改写入 Service 的 Annotation 中。当 Service 触发调谐时,在负载均衡控制台上修改的配置可能会被控制器根据 Annotation 中的配置刷新。
  • CLB 配置项的处理逻辑如下:
    • 如果在 Annotation 中有相关配置(例如开启 ACL 访问控制),则 CLB 的配置和 Annotation 保持一致。在负载均衡控制台手动修改 CLB 的配置后,CLB 的配置直到 Service 下次调谐前,都与负载均衡控制台所做的修改保持一致。但在 Service 再次调谐时,将会被 Annotation 中的设置刷新。
    • 如果在 Annotation 中没有相关配置,CLB 的配置和负载均衡控制台上的配置一致,Service 的调谐不会修改负载均衡控制台上的设置。
    • 如果 Annotation 中有相关配置(例如开启 ACL 访问控制),接着删除了相关的 Annotation,则 CLB 的相关功能维持现状(例如 ACL 依然处于开启状态)。如果希望通过 Annotation 关闭相关功能,需要在 Annotation 中将相关功能的配置设置为关闭状态,而不是直接删除对应的 Annotation。

使用限制

  • 请勿擅自在 CLB 控制台上更改通过创建负载均衡服务维护的 CLB 实例、监听器、后端服务器组和转发规则,否则将造成集群中的负载均衡服务异常,须自行承担责任。
  • 请勿修改监听器和后端服务器组的名称中带有k8s_前缀的内容。
  • 请勿修改转发规则描述中带有k8s_前缀的内容。
  • 若在 CLB 控制台上修改负载均衡服务指定或维护的资源和配置(例如:转发规则),可能存在配置被覆盖的风险。
  • 使用负载均衡(Cloud Load Balancer,CLB)产品,会产生云基础资源使用费用。详细信息,请参见 负载均衡产品计费

注意

  • 在 VKE 中创建负载均衡服务时,如果通过service.beta.kubernetes.io/volcengine-loadbalancer-acl-status为负载均衡服务关联的 CLB 实例监听器配置了访问控制策略,则 VKE 侧的配置,会覆盖负载均衡控制台上的配置(只要触发 VKE 侧的配置,就会覆盖 CLB 侧的配置),请谨慎操作。
  • 注解的内容需要严格区分大小写。

创建服务

对接已有 CLB 实例

使用如下 YAML 配置,创建服务并对接已有的负载均衡实例。

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/volcengine-loadbalancer-id: "clb-mim02n8g5kw05smt1b******"
    # 必填,已有负载均衡实例的 ID
  name: clb-service # 服务的名称
  namespace: default # 服务所属的命名空间
spec:
  externalTrafficPolicy: Cluster
  selector:
    app: nginx # 通过标签选择器将服务与后端容器组(Pod)绑定
  ports:
  - name: test # 端口映射策略命名
    port: 80 # 服务端口
    protocol: TCP  # 端口通信协议 TCP/UDP
    targetPort: 80 # 容器端口
  type: LoadBalancer # 服务的类型

Annotation 说明如下表所示。

Key类型是否必须描述默认值是否支持修改
service.beta.kubernetes.io/volcengine-loadbalancer-idString已存在的负载均衡实例 ID。

新建 CLB 实例

使用如下 YAML 配置,创建服务并同时创建新的负载均衡实例。

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/volcengine-loadbalancer-name: "clb-demo"
    # 非必填,新创建的负载均衡实例名称
    service.beta.kubernetes.io/volcengine-loadbalancer-subnet-id: "subnet-mizw4xqzpssg5smt1b******"
    # 必填,负载均衡实例所属的子网 ID
    service.beta.kubernetes.io/volcengine-loadbalancer-address-type: "PUBLIC"
    # 非必填,负载均衡实例的网络类型。不设置时,默认网络类型为 PUBLIC
    service.beta.kubernetes.io/volcengine-loadbalancer-isp-type: "BGP"
    # 非必填,负载均衡实例的线路类型
    service.beta.kubernetes.io/volcengine-loadbalancer-billing-type: "2"
    # 非必填,负载均衡实例计费类型
    service.beta.kubernetes.io/volcengine-loadbalancer-eip-billing-type: "3"
    # 非必填,公网 IP(EIP)计费类型
    service.beta.kubernetes.io/volcengine-loadbalancer-bandwidth: "25" 
    # 非必填,公网类型负载均衡实例需要指定公网 IP(EIP)带宽峰值。  
    service.beta.kubernetes.io/volcengine-loadbalancer-ip-version: "ipv4"
    # 非必填,负载均衡实例的 IP 地址类型,目前仅支持 IPv4
    service.beta.kubernetes.io/volcengine-loadbalancer-spec: "small_1"
    # 非必填,负载均衡实例的规格
    service.beta.kubernetes.io/volcengine-loadbalancer-sync-fields: "spec"
    # 更新 CLB 实例规格时必填,填写该字段为 spec 时,会根据 loadbalancer-spec 字段更新 CLB 的实例规格
    service.beta.kubernetes.io/volcengine-loadbalancer-master-zone-id: "cn-beijing-a"
    # 非必填,负载均衡实例的主可用区 ID
    service.beta.kubernetes.io/volcengine-loadbalancer-slave-zone-id: "cn-beijing-b"
    # 非必填,负载均衡实例的备可用区 ID
    service.beta.kubernetes.io/volcengine-loadbalancer-modification-protection-status: "ConsoleProtection"
    # 非必填,负载均衡实例的删除保护功能
    service.beta.kubernetes.io/volcengine-loadbalancer-eip-BandwidthPackageId: "bwp-2d63yyj3ki4u858oz***" 
    # 非必填,共享带宽资源包 ID
  name: clb-service # 服务的名称
  namespace: default # 服务所属的命名空间
spec:
  externalTrafficPolicy: Cluster
  selector:
    app: nginx # 通过标签选择器将服务与后端容器组(Pod)绑定
  ports:
  - name: test # 端口映射策略命名
    port: 80 # 服务端口
    protocol: TCP # 端口通信协议,支持 TCP/UDP
    targetPort: 80 # 容器端口
  type: LoadBalancer # 服务的类型

Annotation 说明如下表所示。

Key类型是否必须描述默认值是否支持修改
service.beta.kubernetes.io/volcengine-loadbalancer-nameString创建的负载均衡实例名称,不指定则自动生成名称。
service.beta.kubernetes.io/volcengine-loadbalancer-subnet-idString负载均衡实例所属的子网 ID。

service.beta.kubernetes.io/volcengine-loadbalancer-address-type

String

负载均衡实例的网络访问类型。取值:

  • PUBLIC:公网类型的负载均衡实例。
  • PRIVATE:私网类型的负载均衡实例。

PUBLIC

service.beta.kubernetes.io/volcengine-loadbalancer-isp-type

String

负载均衡实例的线路类型。包括:BGP、SingleLine_BGP、Static_BGP、Fusion_BGP、ChinaMobile、ChinaTelecom、ChinaUnicom、ChinaMobile_Value、ChinaUnicom_Value 和 ChinaTelecom_Value。详细参数解释,请参见 EIP 产品文档

注意

除 BGP 外,其他线路类型均为 EIP 产品的邀测功能,如需使用,请 提交工单 或联系客户经理申请。

BGP

service.beta.kubernetes.io/volcengine-loadbalancer-billing-type

Integer

负载均衡实例的计费类型。取值:

  • 2:按量计费-按规格计费。指定实例规格,并按照实例的使用时长计费。
  • 3:按量计费-按使用量计费。无需指定实例规格,按照实例实际消耗的性能容量计费。

注意

  • 按量计费-按使用量计费 为负载均衡产品的邀测功能,如需使用,请 提交工单 或联系客户经理申请。
  • 当负载均衡选择 按量计费-按使用量计费 类型时,无需配置实例规格类型,即loadbalancer-spec参数。

2

service.beta.kubernetes.io/volcengine-loadbalancer-eip-billing-type

Integer

公网 IP(EIP)计费类型。取值:

  • 2:按量计费-按带宽上限,指定带宽上限后,将按照使用时长计费,与实际流量无关。
  • 3:按量计费-按实际流量,指定带宽上限后,将按照实际使用的出公网流量计费,与使用时长无关。

3

service.beta.kubernetes.io/volcengine-loadbalancer-bandwidth

Integer

负载均衡实例的公网带宽峰值,单位为 Mbps,取值:

  • eip-billing-type为 2 时,取值范围为 1~500。
  • eip-billing-type为 3 时,取值范围为 1~200。

10

service.beta.kubernetes.io/volcengine-loadbalancer-ip-versionString负载均衡实例的 IP 地址类型。当前仅支持 ipv4ipv4

service.beta.kubernetes.io/volcengine-loadbalancer-spec

String

负载均衡实例的规格类型。取值:

  • small_1:小型I
  • small_2:小型II
  • medium_1:中型I
  • medium_2:中型II
  • large_1:大型I
  • large_2:大型II

注意

  • 负载均衡实例规格类型的详细说明,请参见 产品类型与规格
  • loadbalancer-billing-type配置为3,即负载均衡实例采用 按量计费-按使用量计费 类型时,不支持配置本参数。

small_1

service.beta.kubernetes.io/volcengine-loadbalancer-sync-fields

String

需要更新 CLB 实例的规格时,必选

更新 YAML 时,是否感知 loadbalancer-spec字段的变更,并更新 CLB 实例。取值:

  • spec:感知loadbalancer-spec字段的变更,并更新 CLB 实例的规格。

service.beta.kubernetes.io/volcengine-loadbalancer-master-zone-id

String

负载均衡实例的主可用区 ID。

  • 取值不能与slave-zone-id参数取值相同。
  • 不配置该参数或该参数为空时,默认分配子网所在可用区为主可用区。

说明

均衡负载在各地域支持的可用区情况以及可用区 ID,请参见 地域与可用区

service.beta.kubernetes.io/volcengine-loadbalancer-slave-zone-id

String

负载均衡实例的备可用区 ID。

  • 取值不能与master-zone-id参数取值相同。
  • 如果配置该参数,则参数master-zone-id必须一并配置,否则会报错。
  • 不配置该参数或该参数为空时,根据地域可用区部署情况按照如下逻辑处理:
    • 指定地域为单可用区部署时,该参数默认为空,创建单可用区负载均衡实例。
    • 指定地域为多可用区部署时,默认根据指定地域支持的可用区随机分配备可用区。

service.beta.kubernetes.io/volcengine-loadbalancer-modification-protection-status

String

负载均衡实例的删除保护功能,取值:

  • NonProtection:不开启控制台修改保护功能,表示允许通过控制台修改实例或删除实例。
  • ConsoleProtection:开启控制台修改保护功能,表示禁止通过控制台修改实例或删除实例。
  • 不配置该参数或该参数为空时,默认为空,表示开启控制台修改保护功能。

service.beta.kubernetes.io/volcengine-loadbalancer-eip-BandwidthPackageId

String

共享带宽资源包 ID。

注意

  • 仅在service.beta.kubernetes.io/volcengine-loadbalancer-address-type=PUBLIC时生效。
  • 生效后原先的付费方式(按流量计费或按固定带宽计费)会被覆盖。

新建 CLB 实例并对接 VCI 工作负载

使用如下 YAML 配置,创建一个新的负载均衡服务并关联以弹性容器实例(VCI)方式部署的工作负载。

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/volcengine-loadbalancer-name: "clb-demo"
    # 非必填,新创建的负载均衡实例名称
    service.beta.kubernetes.io/volcengine-loadbalancer-subnet-id: "subnet-mizw4xqzpssg5smt1b******"   
    # 必填,负载均衡实例所属的子网 ID
    service.beta.kubernetes.io/volcengine-loadbalancer-pass-through: "true"
    # 必填,开启负载均衡器直通 Pod 模式。关联 VCI 工作负载时必须开启
  name: clb-service # 服务的名称
  namespace: default # 服务所属的命名空间
spec:
  externalTrafficPolicy: Cluster
  selector:
    app: nginx # 通过标签选择器将服务与后端容器组(Pod)绑定
  ports:
  - name: test # 端口映射策略命名
    port: 80 # 服务端口
    protocol: TCP # 端口通信协议,支持 TCP/UDP
    targetPort: 80 # 容器端口
  type: LoadBalancer # 服务的类型

Annotation 说明如下表所示。

Key类型是否必须描述默认值是否支持修改
service.beta.kubernetes.io/volcengine-loadbalancer-nameString创建的负载均衡实例名称,不指定则自动生成名称。
service.beta.kubernetes.io/volcengine-loadbalancer-subnet-idString负载均衡实例所属的子网 ID。

service.beta.kubernetes.io/volcengine-loadbalancer-pass-through

Boolean

是否开启负载均衡器直通 Pod 模式。取值:

  • true:开启,直接关联 Pod 作为负载均衡器的后端。
  • false:不开启。

false

注意

  • 仅在 VPC-CNI 网络模型的集群中支持配置为true。修改该字段会导致流量断流,请谨慎操作。
  • 负载均衡服务关联基于弹性容器实例(VCI)方式部署的工作负载时,必须开启直通 Pod 模式,否则会导致服务不可用。

高级配置

配置调度策略

说明

监听器支持在对接已有 CLB 实例时配置,也支持在创建新的 CLB 实例时配置。本例以对接已有 CLB 实例为例。

负载均衡服务支持通过 Annotation 配置和选择 CLB 实例的监听器,示例和说明如下:

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/volcengine-loadbalancer-id: "clb-mim02n8g5kw05smt1b******"
    # 必填,已有负载均衡实例的 ID
    service.beta.kubernetes.io/volcengine-loadbalancer-scheduler: "wrr"
    # 非必填,监听器的调度算法
  name: clb-service # 服务的名称
  namespace: default # 服务所属的命名空间
spec:
  externalTrafficPolicy: Cluster
  selector:
    app: nginx # 通过标签选择器将服务与后端容器组(Pod)绑定
  ports:
  - name: test # 端口映射策略命名
    port: 80 # 服务端口
    protocol: TCP  # 端口通信协议 TCP/UDP
    targetPort: 80 # 容器端口
  type: LoadBalancer # 服务的类型

Annotation 说明如下表所示。

Key类型是否必须描述默认值是否支持修改

service.beta.kubernetes.io/volcengine-loadbalancer-scheduler

String

负载均衡实例的监听器调度算法。取值:

  • wrr:权重值越高的后端服务器,被轮询到的次数(概率)越高。
  • wlc:将请求分发给“当前连接/权重”比值最小的后端服务器
  • sh:基于源 IP 地址的一致性哈希,相同的源地址会调度到相同的后端服务器。

wrr

配置健康检查

说明

监听器的健康检查功能支持在对接已有 CLB 实例时配置,也支持在创建新的 CLB 实例时配置。本例以对接已有 CLB 实例为例。

负载均衡服务支持通过 Annotation 配置监听器的健康检查功能,示例和说明如下:

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/volcengine-loadbalancer-id: "clb-mim02n8g5kw05smt1b******"
    # 必填,已有负载均衡实例的 ID
    service.beta.kubernetes.io/volcengine-loadbalancer-health-check-flag: "on" 
    # 必填,是否开启健康检查
    service.beta.kubernetes.io/volcengine-loadbalancer-health-check-connect-timeout: "2" 
    # 非必填,等待健康检查的响应时间
    service.beta.kubernetes.io/volcengine-loadbalancer-health-check-interval: "2" 
    # 非必填,健康检查的时间间隔
    service.beta.kubernetes.io/volcengine-loadbalancer-healthy-threshold: "3" 
    # 非必填,后端服务器正常的健康检查次数
    service.beta.kubernetes.io/volcengine-loadbalancer-unhealthy-threshold: "3" 
    # 非必填,后端服务器异常的健康检查次数
  name: clb-service # 服务的名称
  namespace: default # 服务所属的命名空间
spec:
  externalTrafficPolicy: Cluster
  selector:
    app: nginx # 通过标签选择器将服务与后端容器组(Pod)绑定
  ports:
  - name: test # 端口映射策略命名
    port: 80 # 服务端口
    protocol: TCP  # 端口通信协议 TCP/UDP
    targetPort: 80 # 容器端口
  type: LoadBalancer # 服务的类型

Annotation 说明如下表所示。

Key类型是否必须描述默认值是否支持修改

service.beta.kubernetes.io/volcengine-loadbalancer-health-check-flag

String

是否开启健康检查。取值:

  • on:开启健康检查。
  • off:不开启健康检查。

off

service.beta.kubernetes.io/volcengine-loadbalancer-health-check-interval

Integer

健康检查的时间间隔。

  • 取值范围:1~300
  • 单位:秒

2

service.beta.kubernetes.io/volcengine-loadbalancer-health-check-connect-timeout

Integer

健康检查的超时时间。

  • 取值范围:1~60
  • 单位:秒

2

service.beta.kubernetes.io/volcengine-loadbalancer-healthy-threshold

Integer

健康检查连续成功多少次后,将后端服务器的健康检查状态由 Fail 判定为 Success。

  • 取值范围:3~10
  • 单位:次

3

service.beta.kubernetes.io/volcengine-loadbalancer-unhealthy-threshold

Integer

健康检查连续失败多少次后,将后端服务器的健康检查状态由 Success 判定为 Fail。

  • 取值范围:3~10
  • 单位:次

3

配置访问控制

说明

监听器的访问控制功能支持在对接已有 CLB 实例时配置,也支持在创建新的 CLB 实例时配置。本例以对接已有 CLB 实例为例。

负载均衡服务支持通过 Annotation 配置监听器的访问控制功能,示例和说明如下:

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/volcengine-loadbalancer-id: "clb-mim02n8g5kw05smt1b******"
    # 必填,已有负载均衡实例的 ID
    service.beta.kubernetes.io/volcengine-loadbalancer-acl-status: "on"
    # 必填,是否开启监听器的访问控制
    service.beta.kubernetes.io/volcengine-loadbalancer-acl-type: "white"
    # 必填,开启访问控制的方式(白名单、黑名单)
    service.beta.kubernetes.io/volcengine-loadbalancer-acl-id: "acl-3cj44nv0jhhxc6c6rrtet****,acl-2febxt4pu0zy85oxruw0t****"
    # 必填,监听器绑定的访问控制策略组 ID
  name: clb-service # 服务的名称
  namespace: default # 服务所属的命名空间
spec:
  externalTrafficPolicy: Cluster
  selector:
    app: nginx # 通过标签选择器将服务与后端容器组(Pod)绑定
  ports:
  - name: test # 端口映射策略命名
    port: 80 # 服务端口
    protocol: TCP  # 端口通信协议 TCP/UDP
    targetPort: 80 # 容器端口
  type: LoadBalancer # 服务的类型

Annotation 说明如下表所示。

Key类型是否必须描述默认值是否支持修改

service.beta.kubernetes.io/volcengine-loadbalancer-acl-status

String

负载均衡实例的监听器是否开启访问控制。取值:

  • off:不开启。
  • on:开启。

off

service.beta.kubernetes.io/volcengine-loadbalancer-acl-type

String

负载均衡实例的监听器开启访问控制的方式。取值:

  • black:黑名单方式。表示仅拒绝来自所选访问控制策略组中设置的 IP 地址或地址段的请求。

    说明

    如果所选策略组中没有添加 IP,则监听器会转发所有请求。

  • white:白名单方式。表示监听器仅转发来自所选访问控制策略组中设置的 IP 地址或地址段的请求。

    说明

    如果所选策略组中没有添加 IP,则监听器不会转发任何请求。

black

service.beta.kubernetes.io/volcengine-loadbalancer-acl-id

String

负载均衡实例的监听器所绑定的访问控制策略组(ACL)ID。策略组相关信息,请参见 管理访问控制策略组
最多支持传入 5 个策略组 ID,多个策略组 ID 间使用英文逗号(,)分隔。

配置直通 Pod 模式

说明

直通 Pod 模式支持在对接已有 CLB 实例时配置,也支持在创建新的 CLB 实例时配置。本例以对接已有 CLB 实例为例。

负载均衡服务支持通过 Annotation 配置和选择监听器,示例和说明如下:

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/volcengine-loadbalancer-id: "clb-mim02n8g5kw05smt1b******"
    # 必填,已有负载均衡实例的 ID
    service.beta.kubernetes.io/volcengine-loadbalancer-pass-through: "true"
    # 必填,是否开启负载均衡器直通 Pod 模式
  name: clb-service # 服务的名称
  namespace: default # 服务所属的命名空间
spec:
  externalTrafficPolicy: Cluster
  selector:
    app: nginx # 通过标签选择器将服务与后端容器组(Pod)绑定
  ports:
  - name: test # 端口映射策略命名
    port: 80 # 服务端口
    protocol: TCP  # 端口通信协议 TCP/UDP
    targetPort: 80 # 容器端口
  type: LoadBalancer # 服务的类型

Annotation 说明如下表所示。

Key类型是否必须描述默认值是否支持修改

service.beta.kubernetes.io/volcengine-loadbalancer-pass-through

Boolean

是否开启负载均衡器直通 Pod 模式。取值:

  • true:开启,直接关联 Pod 作为负载均衡器的后端。
  • false:不开启。

false

注意

  • 仅在 VPC-CNI 网络模型的集群中支持配置为true。修改该字段会导致流量断流,请谨慎操作。
  • 负载均衡服务关联基于弹性容器实例(VCI)方式部署的工作负载时,必须开启直通 Pod 模式,否则会导致服务不可用。

配置 Proxy Protocol 源 IP 透传

说明

  • 监听器的 Proxy Protocol 源 IP 透传功能支持在对接已有 CLB 实例时配置,也支持在创建新的 CLB 实例时配置。本例以对接已有 CLB 实例为例。
  • Proxy-Protocol 协议功能为 CLB 产品的邀测功能,如需使用,请 提交工单 或联系客户经理申请。

负载均衡服务支持通过 Annotation 配置监听器的 Proxy Protocol 源 IP 透传功能,示例和说明如下:

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/volcengine-loadbalancer-id: "clb-mim02n8g5kw05smt1b******"
    # 必填,已有负载均衡实例的 ID
    service.beta.kubernetes.io/volcengine-loadbalancer-proxy-protocol: "standard"
    # 必填,开启 Proxy Protocol 源 IP 透传
  name: clb-service # 服务的名称
  namespace: default # 服务所属的命名空间
spec:
  externalTrafficPolicy: Cluster
  selector:
    app: nginx # 通过标签选择器将服务与后端容器组(Pod)绑定
  ports:
  - name: test # 端口映射策略命名
    port: 80 # 服务端口
    protocol: TCP  # 端口通信协议 TCP/UDP
    targetPort: 80 # 容器端口
  type: LoadBalancer # 服务的类型

Annotation 说明如下表所示。

Key类型是否必须描述默认值是否支持修改

service.beta.kubernetes.io/volcengine-loadbalancer-proxy-protocol

String

是否开启 Proxy Protocol 源 IP 透传,取值:

  • standard:开启 proxy protocol 源 IP 透传。
  • off:关闭 proxy protocol 源 IP 透传。

注意

目前,CLB 的配置最终会与 LB Service 中的设置保持一致。若此前已经手动在负载均衡控制台修改了 CLB 的配置,请在 LB service 中配置相应的内容,防止手动修改的内容失效。

off

相关文档