服务(Serivce)支持通过注解(Annotation)实现更加丰富的四层负载均衡(CLB)能力。本文主要介绍使用 Annotation 配置负载均衡服务的配置方法。
注意
使用如下 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-id | String | 是 | 已存在的负载均衡实例 ID。 | 无 | 否 |
使用如下 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
service.beta.kubernetes.io/volcengine-loadbalancer-eni-address-number: "2"
# 非必填,配置负载均衡实例的私网 IPv4 地址数量
service.beta.kubernetes.io/volcengine-loadbalancer-eni-address: "192.168.0.1"
# 非必填,配置负载均衡实例的私网 IPv4 地址,该地址必须包含在所选子网的 IPv4 网段中,且未被占用
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-name | String | 否 | 创建的负载均衡实例名称,不指定则自动生成名称。 | 无 | 否 |
service.beta.kubernetes.io/volcengine-loadbalancer-subnet-id | String | 是 | 负载均衡实例所属的子网 ID。 | 无 | 否 |
service.beta.kubernetes.io/volcengine-loadbalancer-address-type | String | 否 | 负载均衡实例的网络访问类型。取值:
| 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 | 是 |
service.beta.kubernetes.io/volcengine-loadbalancer-eip-billing-type | Integer | 否 | 公网 IP(EIP)计费类型。取值:
| 3 | 否 |
service.beta.kubernetes.io/volcengine-loadbalancer-bandwidth | Integer | 否 | 负载均衡实例的公网带宽峰值,单位为 Mbps,取值:
| 1 | 否 |
service.beta.kubernetes.io/volcengine-loadbalancer-ip-version | String | 否 | 负载均衡实例的 IP 地址类型。当前仅支持 ipv4。 | ipv4 | 否 |
service.beta.kubernetes.io/volcengine-loadbalancer-spec | String | 否 | 负载均衡实例的规格类型。取值:
注意
| small_1 | 是 |
service.beta.kubernetes.io/volcengine-loadbalancer-sync-fields | String | 需要更新 CLB 实例的规格时,必选 | 更新 YAML 时,是否感知
| 无 | 否 |
service.beta.kubernetes.io/volcengine-loadbalancer-master-zone-id | String | 否 | 负载均衡实例的主可用区 ID。
说明 负载均衡在各地域支持的可用区情况以及可用区 ID,请参见 地域与可用区。 | 无 | 否 |
service.beta.kubernetes.io/volcengine-loadbalancer-slave-zone-id | String | 否 | 负载均衡实例的备可用区 ID。
| 无 | 否 |
service.beta.kubernetes.io/volcengine-loadbalancer-modification-protection-status | String | 否 | 负载均衡实例的修改保护功能,取值:
| 无 | 是 |
service.beta.kubernetes.io/volcengine-loadbalancer-eip-BandwidthPackageId | String | 否 | 共享带宽资源包 ID。 注意
| 无 | 是 |
service.beta.kubernetes.io/volcengine-loadbalancer-eni-address-number | String | 否 | 配置负载均衡实例的私网 IPv4 地址数量。 说明
| 无 | 否 |
service.beta.kubernetes.io/volcengine-loadbalancer-eni-address | String | 否 | 配置负载均衡实例的私网 IPv4 地址,该地址必须包含在所选子网的 IPv4 网段中,且未被占用。 说明 与 | 无 | 否 |
使用如下 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-name | String | 否 | 创建的负载均衡实例名称,不指定则自动生成名称。 | 无 | 否 |
service.beta.kubernetes.io/volcengine-loadbalancer-subnet-id | String | 是 | 负载均衡实例所属的子网 ID。 | 无 | 否 |
service.beta.kubernetes.io/volcengine-loadbalancer-pass-through | Boolean | 是 | 是否开启负载均衡器直通 Pod 模式。取值:
| false | 是 |
注意
true
。修改该字段会导致流量断流,请谨慎操作。说明
监听器支持在对接已有 CLB 实例时配置,也支持在创建新的 CLB 实例时配置。下文以对接已有 CLB 实例为例。
当您未使用service.beta.kubernetes.io/volcengine-loadbalancer-protocol-port
字段配置监听器的负载均衡协议时,系统会根据 YAML 配置中的spec.ports
字段配置监听器协议,例如:当spec.ports
字段中的protocol
配置为 UDP 时,则系统创建 UDP 类型的监听器。示例如下:
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: UDP # 端口通信协议 TCP/UDP
targetPort: 80 # 容器端口
type: LoadBalancer # 服务的类型
当您未使用service.beta.kubernetes.io/volcengine-loadbalancer-protocol-port
字段配置监听器的负载均衡协议时,系统会根据 YAML 配置中的spec.ports
字段配置监听器协议,例如:当spec.ports
字段中的protocol
配置为 TCP 时,则系统创建 TCP 类型的监听器。示例如下:
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 配置 CLB 实例中 HTTP 协议类型的监听器,示例和说明如下:
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/volcengine-loadbalancer-id: "clb-mim02n8g5kw05smt1b******"
# 必填,已有负载均衡实例的 ID
service.beta.kubernetes.io/volcengine-loadbalancer-protocol-port: "HTTP: 80"
# 必填,配置七层协议监听器,包括协议(HTTP、HTTPS)和端口号
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-protocol-port | String | 是 | 配置监听器的七层协议和端口号。允许配置多个值,多个值之间用英文半角逗号, 分隔,例如https:443,http:80 。 | 无 | 是 |
警告
配置完成后,允许在 YAML 中更新或删除该 Annotation 配置。更新 Annotation 时,系统会删除原监听器,并基于更新后的配置重建监听器。此过程会导致业务中断,请谨慎配置。
负载均衡服务支持通过 Annotation 配置 CLB 实例中 HTTPS 协议类型的监听器,示例和说明如下:
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/volcengine-loadbalancer-id: "clb-mim02n8g5kw05smt1b******"
# 必填,已有负载均衡实例的 ID
service.beta.kubernetes.io/volcengine-loadbalancer-protocol-port: "HTTPS: 443"
# 必填,配置七层协议监听器,包括协议(HTTP、HTTPS)和端口号
service.beta.kubernetes.io/volcengine-loadbalancer-cert-source: "clb"
# 必填,HTTPS 协议使用的证书来源。取值:clb 和 cert_center(证书中心)
service.beta.kubernetes.io/volcengine-loadbalancer-cert-id: "cert-22jti***"
# 必填,HTTPS 协议使用的服务器证书 ID
service.beta.kubernetes.io/volcengine-loadbalancer-security-policy-id: "default_policy"
# 非必填,加密套件选择策略
service.beta.kubernetes.io/volcengine-loadbalancer-ca-enabled: "on"
# 非必填,是否开启双向认证,取值:on(开启)、off(关闭)
service.beta.kubernetes.io/volcengine-loadbalancer-ca-cert-id: "cert-22jti***"
# 当开启双向认证时必填,双向认证使用的 CA 证书 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-protocol-port | String | 是 | 配置监听器的七层协议和端口号。允许配置多个值,多个值之间用英文半角逗号, 分隔,例如https:443,http:80 。 | 无 | 是 |
service.beta.kubernetes.io/volcengine-loadbalancer-cert-source | String | 是 | 配置证书来源,取值:
| 无 | 是 |
service.beta.kubernetes.io/volcengine-loadbalancer-cert-id | String | 是 | 服务器证书 ID。 说明 CCM 不主动校验证书 ID 的合法性。如果证书 ID 不合法,会导致创建监听器失败。 | 无 | 是 |
service.beta.kubernetes.io/volcengine-loadbalancer-security-policy-id | String | 否 | 开启 TLS 安全策略,并选择加密策略。取值:
| default_policy | 是 |
service.beta.kubernetes.io/volcengine-loadbalancer-ca-enabled | String | 否 | 是否开启双向认证,取值:
| 无 | 是 |
service.beta.kubernetes.io/volcengine-loadbalancer-ca-cert-id | Srting | 开启双向认证时必填 | 双向认证使用的 CA 证书 ID。 说明 CCM 不主动校验证书 ID 的合法性。如果证书 ID 不合法,会导致创建监听器失败。 | 无 | 是 |
警告
配置完成后,允许在 YAML 中更新或删除该 Annotation 配置。更新 Annotation 时,系统会删除原监听器,并基于更新后的配置重建监听器。此过程会导致业务中断,请谨慎配置。
负载均衡服务支持通过 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"
# 必填,监听器的调度算法,取值:wrr、wlc 和 sh
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 | 是 |
说明
仅 TCP 和 UDP 协议的监听器支持配置超时时间。
负载均衡服务支持通过 Annotation 配置 CLB 实例的超时时间,示例和说明如下:
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/volcengine-loadbalancer-id: "clb-mim02n8g5kw05smt1b******"
# 必填,已有负载均衡实例的 ID
service.beta.kubernetes.io/volcengine-loadbalancer-established-timeout: 100
# 必填,监听器的超时时间
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-established-timeout | Integer | 是 | 配置监听器的连接超时时间,当前仅针对 TCP 和 UDP 监听器生效。取值范围:
| 无 | 是 |
负载均衡服务支持通过 Annotation 配置 CLB 实例的带宽峰值,示例和说明如下:
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/volcengine-loadbalancer-id: "clb-mim02n8g5kw05smt1b******"
# 必填,已有负载均衡实例的 ID
service.beta.kubernetes.io/volcengine-loadbalancer-listener-bandwidth: 10
# 必填,监听器的带宽峰值
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-listener-bandwidth | Integer | 是 | 配置监听器的带宽峰值,单位为 Mbps。
| 无 | 是 |
负载均衡服务支持通过 Annotation 配置 CLB 实例的会话保持,示例和说明如下:
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/volcengine-loadbalancer-id: "clb-mim02n8g5kw05smt1b******"
# 必填,已有负载均衡实例的 ID
service.beta.kubernetes.io/volcengine-loadbalancer-persistence-timeout: 3600
# 必填,监听器的会话保持功能
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-persistence-timeout | Integer | 是 | 配置监听器的会话保持功能和超时时间。开启后,将支持基于源 IP 的会话保持能力。取值范围为 0~3600,单位为秒。其中:
| 无 | 是 |
负载均衡服务支持通过 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-method: "GET"
# 非必填,健康检查的方法,支持 GET(默认值)、HEAD,仅监听器协议为 HTTP/HTTPS 时支持
service.beta.kubernetes.io/volcengine-loadbalancer-health-check-domain: "example.com"
# 非必填,健康检查的域名,支持为空,仅监听器协议为 HTTP/HTTPS 时支持
service.beta.kubernetes.io/volcengine-loadbalancer-health-check-uri: "/"
# 非必填,健康检查的路径,仅监听器协议为 HTTP/HTTPS 时支持
service.beta.kubernetes.io/volcengine-loadbalancer-health-check-http-code: "http_2xx"
# 非必填,健康检查正常的状态码,仅监听器协议为 HTTP/HTTPS 时支持
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"
# 非必填,后端服务器异常的健康检查次数
service.beta.kubernetes.io/volcengine-loadbalancer-health-check-udp-request: "healthcheckrequest"
# 非必填,配置健康检查的请求字符串,仅监听器协议为 UDP 时支持
service.beta.kubernetes.io/volcengine-loadbalancer-health-check-udp-expect: "ok"
# 非必填,配置健康检查的响应字符串,仅监听器协议为 UDP 时支持
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 | 是 | 是否开启健康检查。取值:
| off | 是 |
service.beta.kubernetes.io/volcengine-loadbalancer-health-check-method | String | 否 | 健康检查的方法,仅监听器协议为 HTTP/HTTPS 时支持。取值:
| GET | 是 |
service.beta.kubernetes.io/volcengine-loadbalancer-health-check-domain | String | 否 | 健康检查的域名,仅监听器协议为 HTTP/HTTPS 时支持。
| 无 | 是 |
service.beta.kubernetes.io/volcengine-loadbalancer-health-check-uri | String | 否 | 健康检查的路径,仅监听器协议为 HTTP/HTTPS 时支持。 | / | 是 |
service.beta.kubernetes.io/volcengine-loadbalancer-health-check-http-code | String | 否 | 健康检查正常的状态码,支持配置多个 HTTP 状态码,多个状态码间用半角逗号
| http_2xx | 是 |
service.beta.kubernetes.io/volcengine-loadbalancer-health-check-interval | Integer | 否 | 健康检查的时间间隔。
| 2 | 是 |
service.beta.kubernetes.io/volcengine-loadbalancer-health-check-connect-timeout | Integer | 否 | 健康检查的超时时间。
| 2 | 是 |
service.beta.kubernetes.io/volcengine-loadbalancer-healthy-threshold | Integer | 否 | 健康检查连续成功多少次后,将后端服务器的健康检查状态由 Fail 判定为 Success。
| 3 | 是 |
service.beta.kubernetes.io/volcengine-loadbalancer-unhealthy-threshold | Integer | 否 | 健康检查连续失败多少次后,将后端服务器的健康检查状态由 Success 判定为 Fail。
| 3 | 是 |
service.beta.kubernetes.io/volcengine-loadbalancer-health-check-udp-request | String | 否 | 健康检查的请求字符串,仅监听器协议为 UDP 时支持。
| 无 | 是 |
service.beta.kubernetes.io/volcengine-loadbalancer-health-check-udp-expect | String | 否 | 健康检查的响应字符串,仅监听器协议为 UDP 时支持。
| 无 | 是 |
负载均衡服务支持通过 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 | 是 |
service.beta.kubernetes.io/volcengine-loadbalancer-acl-type | String | 是 | 监听器开启访问控制的方式。取值:
| black | 是 |
service.beta.kubernetes.io/volcengine-loadbalancer-acl-id | String | 是 | 监听器绑定的访问控制策略组(ACL)ID。策略组相关信息,请参见 管理访问控制策略组。 | 无 | 是 |
负载均衡服务支持通过 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 透传,取值:
| off | 是 |
注意
true
。修改该字段会导致流量断流,请谨慎操作。负载均衡服务支持通过 Annotation 配置直通 Pod 模式,示例和说明如下:
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 模式。取值:
| false | 是 |
注意
负载均衡服务支持通过 Annotation 配置是否展示公网 CLB 的私网 IP 地址,示例和说明如下:
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/volcengine-loadbalancer-id: "clb-mim02n8g5kw05smt1b******"
# 必填,已有负载均衡实例的 ID
service.beta.kubernetes.io/volcengine-loadbalancer-display-internal-ip: "true"
# 必填,是否展示公网 CLB 的私网 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-display-internal-ip | Boolean | 是 | 是否展示公网 CLB 的私网 IP 地址。取值:
| false | 是 |
配置完成后,支持通过控制台或 YAML 配置,查看 CLB 实例的公网和私网 IP 地址。
注意
负载均衡服务支持通过 Annotation 为负载均衡添加额外标签,示例和说明如下:
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-additional-resource-tags: "key1=value1,key2=value2"
# 必填,为负载均衡添加额外标签
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-additional-resource-tags | String | 是 | 为负载均衡添加额外标签。值为key=value 形式,支持配置多个标签,多个标签之间用英文半角逗号, 分隔。 | 无 | 否 |
配置完成后,您可以登录负载均衡控制台,查看新创建 CLB 实例中的额外标签。