为实现丰富的负载均衡功能,您可以通过Service YAML文件中的Annotation(注解)对CLB、监听和后端服务器组这三种资源维度进行配置操作。
索引
|
分类 |
功能分类 |
配置链接 |
|
创建负载均衡 |
||
|
指定已有实例 |
||
|
配置负载均衡 |
||
|
开启实例保护 |
||
|
会话保持设置 |
||
|
端口和协议配置 |
||
|
高级配置 |
||
|
配置管理 |
||
注解使用说明
-
注解的内容区分大小写。
-
使用注解前请先在本文中查看该功能支持的CCM组件版本。如需升级CCM组件,请参见管理组件。关于CCM的组件变更记录,请参见Cloud Controller Manager。
-
自2019年09月11日起,
annotations字段alicloud更新为alibaba-cloud。例如:
更新前:
service.beta.kubernetes.io/alicloud-loadbalancer-id更新后:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id系统将继续兼容
alicloud的写法,您无需做任何修改。
CLB的典型操作
创建一个公网类型的负载均衡
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
创建一个私网类型的负载均衡
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type
|
描述 |
支持的CCM版本 |
|
指定负载均衡为私网类型。取值:
默认值: 建议参见为负载均衡指定虚拟交换机为CLB手动指定vSwitch。若不指定,系统将根据CCM组件版本自动选择:
|
v1.9.3及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
指定负载均衡规格
Annotation:多个,如下表所示。
|
注解 |
描述 |
支持的CCM版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type |
实例计费方式。取值:
默认值: 重要
|
v2.4.0及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec |
负载均衡实例的规格。通过该参数可以创建指定规格的CLB,或者更新已有CLB的规格。 取值:
默认值: 关于该选项的更多取值,请参见CreateLoadBalancer。 重要
如果您通过CLB控制台修改CLB规格(仅支持修改按规格计费的负载均衡实例),可能会被CCM修改回原规格,请谨慎操作。 |
v1.9.3及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: "PayBySpec"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: "slb.s1.small"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
使用已有的负载均衡
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id
|
描述 |
支持的CCM版本 |
|
重要
负载均衡实例的ID。通过此Annotation指定已有的CLB。
|
v1.9.3.81-gca19cd4-aliyun及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LOADBALANCER_ID}"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
使用已有的负载均衡,并强制覆盖已有监听
Annotation:多个,如下表所示。强制覆盖已有监听,如果监听端口冲突,则会删除已有监听。
|
注解 |
描述 |
支持的CCM版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id |
重要
为避免集群不可用或流量中断等非预期行为,请勿复用 API Server CLB 或由 CCM 创建的 CLB。请通过传统型负载均衡(CLB)控制台手动创建新实例。 负载均衡实例的ID。通过此Annotation指定已有的CLB。
|
v1.9.3.81-gca19cd4-aliyun及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners |
绑定已有负载均衡时,决定是否根据Service同步CLB监听配置。
默认值: 重要
复用已有CLB且设置 |
v1.9.3.81-gca19cd4-aliyun及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LOADBALANCER_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
创建负载均衡时,指定主备可用区
Annotation:多个,如下表所示。一旦创建,主备可用区不支持修改。
某些地域的负载均衡不支持主备可用区,请以CLB创建页面为准。
|
注解 |
描述 |
支持的CCM版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid |
主后端服务器的可用区ID。 |
v1.9.3.10-gfb99107-aliyun及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-slave-zoneid |
备份后端服务器的可用区ID。 |
v1.9.3.10-gfb99107-aliyun及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid: "cn-hangzhou-k"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-slave-zoneid: "cn-hangzhou-j"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
创建按带宽付费的负载均衡
Annotation:多个,如下表所示。以下两项Annotation必选。
|
注解 |
描述 |
支持的CCM版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type |
负载均衡实例的计费方式。取值:
默认值: |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth |
负载均衡的带宽,为带宽峰值,默认值:50。仅适用于公网类型的负载均衡。其他限制,请参见修改公网负载均衡实例的计费方式。 |
v1.9.3.10-gfb99107-aliyun及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: "paybybandwidth"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth: "2"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
为负载均衡指定虚拟交换机
Annotation:多个,如下表所示。以下两项Annotation必选。
|
注解 |
描述 |
支持的CCM版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type |
指定负载均衡为私网类型。取值:
默认值: |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id |
负载均衡实例所属的VSwitch ID,虚拟交换机必须与Kubernetes集群属于同一个VPC。 设置该参数时,需同时设置 可以登录专有网络管理控制台查询交换机ID。 |
v1.9.3及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id: "${YOUR_VSWITCH_ID}"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
为私网负载均衡指定IP地址
Annotation:多个,如下表所示。以下三项Annotation必选。
|
注解 |
描述 |
支持的CCM版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type |
指定负载均衡为私网类型。取值:
默认值: |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id |
负载均衡实例所属的VSwitch ID,虚拟交换机必须与Kubernetes集群属于同一个VPC。 设置该参数时,需同时设置 可以登录专有网络管理控制台查询交换机ID。 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip |
私网负载均衡实例的IP。
|
v2.7.0及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id: "${YOUR_VSWITCH_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip: "192.168.x.x"
name: nginx
namespace: default
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
name: http
selector:
app: nginx
为负载均衡添加额外标签
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags
|
描述 |
支持的CCM版本 |
|
需要添加的Tag列表。多个标签用英文半角逗号(,)分隔,例如 重要
在Service上添加该注解指定额外标签后,在控制台上对对应负载均衡实例标签进行的额外修改操作存在被覆盖的风险。 |
v1.9.3及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags: "Key1=Value1,Key2=Value2"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
创建IPv6类型的负载均衡
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version
|
描述 |
支持的CCM版本 |
|
负载均衡实例的IP版本,创建后IP类型不可更改。使用时,集群的kube-proxy代理模式需为IPVS。取值:
默认值: |
v1.9.3.220-g24b1885-aliyun及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ip-version: "ipv6"
name: nginx
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
为负载均衡开启删除保护
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-delete-protection
|
描述 |
支持的CCM版本 |
|
负载均衡删除保护。取值:
默认值: 重要
对于LoadBalancer类型的Service创建的负载均衡,如果手动在CLB控制台开启了删除保护,仍可通过 |
v1.9.3.313-g748f81e-aliyun及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-delete-protection: "on"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
为负载均衡开启配置修改保护
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-modification-protection
|
描述 |
支持的CCM版本 |
|
负载均衡配置修改保护。取值:
默认值: |
v1.9.3.313-g748f81e-aliyun及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-modification-protection: "ConsoleProtection"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
指定负载均衡名称
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name
|
描述 |
支持的CCM版本 |
|
负载均衡实例名称。长度为2~128个英文或中文字符,必须以大小写字母或中文开头,可包含数字、半角句号(.)、下划线(_)和短划线(-)。 |
v1.9.3.313-g748f81e-aliyun及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name: "your-svc-name"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
指定负载均衡所属的资源组
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id
|
描述 |
支持的CCM版本 |
|
负载均衡所属资源组ID,资源组ID指定后不可被修改。可在阿里云资源管理平台查询资源组ID。 |
v1.9.3.313-g748f81e-aliyun及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-resource-group-id: "rg-xxxx"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
为Service设置Hostname
Annotation:多个,如下表所示。
|
注解 |
描述 |
支持的CCM版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
多个值之间用英文半角逗号(,)分隔,例如 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-hostname |
为Service设置Hostname。Hostname需要符合DNS命名规则。 有如下注意事项:
|
v2.3.0及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-hostname: "${your_service_hostname}"
name: nginx-svc
namespace: default
spec:
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
预期输出:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-svc loadBalancer 47.100.XX.XX www.example.com 80:30248/TCP,443:32670/TCP 10s
创建一个按使用量计费的负载均衡
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type
|
描述 |
支持的CCM版本 |
|
实例计费方式。取值:
默认值: 重要
|
v2.4.0及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-instance-charge-type: "PayByCLCU"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
监听的典型操作
为TCP类型的负载均衡配置会话保持时间
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-persistence-timeout
|
描述 |
支持的CCM版本 |
|
会话保持时间。仅针对TCP协议的监听。如果负载均衡实例配置了多个TCP协议的监听端口,则默认将该配置应用到所有TCP协议的监听端口。 单位:秒。取值[0, 3600]。默认值:0,即会话保持关闭。更多信息,请参见CreateLoadBalancerTCPListener。 |
v1.9.3及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-persistence-timeout: "1800"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
为HTTP和HTTPS协议的监听配置会话保持(insert cookie)
Annotation:多个,如下表所示。插入cookie时,以下四项Annotation必选。
-
仅支持HTTP及HTTPS协议的负载均衡实例。
-
如果配置了多个HTTP或者HTTPS的监听端口,该会话保持默认应用到所有HTTP和HTTPS监听端口。
|
注解 |
描述 |
支持的CCM版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session |
是否开启会话保持。仅对HTTP和HTTPS协议的监听生效。取值:
默认值: 更多信息,请参见:CreateLoadBalancerHTTPListener和CreateLoadBalancerHTTPSListener。 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type |
cookie的处理方式。仅对HTTP和HTTPS协议的监听生效。当
更多信息,请参见CreateLoadBalancerHTTPListener和CreateLoadBalancerHTTPSListener。 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie-timeout |
Cookie超时时间。当 更多信息,请参见:CreateLoadBalancerHTTPListener和CreateLoadBalancerHTTPSListener。 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie |
服务器上配置的Cookie名称。 长度为1~200个字符,只能包含 ASCII 英文字母和数字字符,不能包含半角逗号(,)、半角分号(;)或空格,也不能以美元符号($)开头。 当 更多信息,请参见CreateLoadBalancerHTTPListener和CreateLoadBalancerHTTPSListener。 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
多个值之间用英文半角逗号(,)分隔,例如 |
v1.9.3及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type: "insert"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie-timeout: "1800"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
为负载均衡配置访问控制策略组
Annotation:多个,如下表所示。以下三项Annotation必选。
使用此Annotation创建带有访问控制的负载均衡前,需先在传统型负载均衡CLB控制台上创建一个负载均衡访问控制策略组,记录该访问控制策略组ID(acl-id)。
|
注解 |
描述 |
支持的CCM版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status |
是否开启访问控制功能。取值:
默认值: |
v1.9.3.164-g2105d2e-aliyun及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-id |
监听绑定的访问策略组ID。当 |
v1.9.3.164-g2105d2e-aliyun及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-type |
访问控制类型。取值:
|
v1.9.3.164-g2105d2e-aliyun及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-id: "${YOUR_ACL_ID}" # 不支持配置多个策略组。
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-type: "white"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
为负载均衡指定转发端口
端口转发是指将HTTP端口的请求转发到HTTPS端口。
Annotation:多个,如下表所示。以下三项Annotation必选。
|
注解 |
描述 |
支持的CCM版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
多个值之间用英文半角逗号(,)分隔,例如 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id |
阿里云上的证书ID。 请登录CLB控制台,在证书管理页面查看证书ID。 说明
如需创建证书,请参见选择阿里云签发证书。 |
v1.9.3.164-g2105d2e-aliyun及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-forward-port |
将HTTP请求转发至HTTPS指定端口,例如 |
v1.9.3.164-g2105d2e-aliyun及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443,http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-forward-port: "80:443"
name: nginx
namespace: default
spec:
ports:
- name: https
port: 443
protocol: TCP
targetPort: 80
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
为负载均衡设置调度算法
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler
|
描述 |
支持的CCM版本 |
|
调度算法。取值:
默认值: 关于该选项的更多取值,请参见CLB创建对应类型监听API(如创建TCP监听)中的 |
v1.9.3及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "wrr"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
创建UDP类型的监听
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: UDP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
创建HTTP类型的监听
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port
-
健康检查:HTTP监听的健康检查默认为关闭状态。为确保后端服务的可用性,建议为监听端口配置HTTP或TCP类型的健康检查。
-
集群内访问:在集群内通过CLB IP访问服务时,请求流量可能会在集群内部被截断,导致访问异常。请参见为Service设置Hostname,通过添加Annotation来强制流量绕行CLB。详见在集群内访问LoadBalancer Service的External IP的注意事项。
|
描述 |
支持的CCM版本 |
|
多个值之间用英文半角逗号(,)分隔,例如 |
v1.9.3及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
创建HTTPS类型的监听
Annotation:多个,如下表所示。
HTTPS请求会在CLB层解密,然后以HTTP请求的形式发送给后端的Pod。
-
健康检查:HTTPS监听的健康检查默认为关闭状态。为确保后端服务的可用性,建议为监听端口配置HTTP或TCP类型的健康检查。
-
集群内访问:在集群内通过CLB IP访问服务时,请求流量可能会在集群内部被截断,导致访问异常。请参见为Service设置Hostname,通过添加Annotation来强制流量绕行CLB。详见在集群内访问LoadBalancer Service的External IP的注意事项。
|
注解 |
描述 |
支持的CCM版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
多个值之间用英文半角逗号(,)分隔,例如 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id |
阿里云上的证书ID。 请登录CLB控制台,在证书管理页面查看证书ID。 说明
如需创建证书,请参见选择阿里云签发证书。 |
v1.9.3.164-g2105d2e-aliyun及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
集群内访问CLB时出现SSL协议错误
问题现象
为Service创建HTTPS类型监听后,在集群外可正常访问,但在集群内的节点或Pod中,使用curl访问Service关联的CLB的HTTPS端口时,返回以下错误:
curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version number问题原因
该问题由节点上的IPVS规则导致:
Service配置:由于CLB的 HTTPS 监听仅支持 HTTP 协议作为后端服务,故Service只能将
port: 443的流量转发至targetPort: 80。ACK因此在节点上创建IPVS规则,将访问443端口的流量直接转发到后端的80端口。四层转发:IPVS工作在TCP/IP协议栈的第四层,仅转发TCP数据包,不解析TLS/HTTPS等应用层协议。
协议不匹配:客户端(curl)发起的HTTPS请求(TLS握手数据)被IPVS直接转发到Service后端服务HTTP
80端口。由于该端口未配置TLS,无法解析TLS请求,因此返回HTTP400错误,客户端则报告SSL协议错误。
解决方案
为Service添加service.beta.kubernetes.io/alibaba-cloud-loadbalancer-hostname注解。该注解可以避免在节点上生成IPVS规则,强制集群内流量通过CLB访问,从而确保TLS在CLB上被正确处理。详细操作步骤请参考。
为HTTPS类型监听配置扩展域名证书
Annotation:多个,如下表所示。
|
注解 |
描述 |
支持的CCM版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
多个值之间用英文半角逗号(,)分隔,例如 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id |
阿里云上的证书ID。 请登录CLB控制台,在证书管理页面查看证书ID。 说明
如需创建证书,请参见选择阿里云签发证书。 |
v1.9.3.164-g2105d2e-aliyun及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-domain-extensions |
指定扩展域名和证书ID,格式为 请登录CLB控制台,在证书管理页面查看证书ID。 |
v2.13.0及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-domain-extensions: "${DOMAIN_1}:${CERT_ID_1},${DOMAIN_2}:${CERT_ID_2}"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
创建带健康检查的监听
设置TCP类型的健康检查
Annotation:多个,如下表所示。以下所有Annotation必选。
TCP端口默认开启健康检查。
|
注解 |
描述 |
支持的CCM版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch |
TCP及UDP监听是否开启健康检查。取值:
默认值: |
v2.6.0及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type |
健康检查类型。取值:
默认值: |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout |
接收来自运行状况检查的响应需要等待的时间,适用于TCP模式。如果后端ECS在指定的时间内没有正确响应,则判定为健康检查失败。单位:秒。取值范围为[1, 300]。 如果 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold |
健康检查连续成功多少次后,将后端服务器的健康检查状态由 取值范围为[2, 10],默认值:3。更多信息,请参见CreateLoadBalancerTCPListener。 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold |
健康检查连续失败多少次后,将后端服务器的健康检查状态由success判定为fail。取值范围为[2, 10],默认值:3。更多信息,请参见CreateLoadBalancerTCPListener。 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval |
健康检查的时间间隔。单位:秒。取值范围[1, 50],默认值:2。更多信息,请参见CreateLoadBalancerTCPListener。 |
v1.9.3及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type: "tcp"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "8"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "4"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "4"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "3"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
设置UDP类型的健康检查
Annotation:多个,如下表所示。以下所有Annotation必选。
UDP端口默认开启健康检查。
|
注解 |
描述 |
支持的CCM版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch |
TCP及UDP监听是否开启健康检查。取值:
默认值: |
v2.6.0及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout |
接收来自运行状况检查的响应需要等待的时间,适用于TCP模式。如果后端ECS在指定的时间内没有正确响应,则判定为健康检查失败。单位:秒。取值范围为[1, 300]。 如果 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold |
健康检查连续成功多少次后,将后端服务器的健康检查状态由fail判定为success。 取值范围为[2, 10],默认值:3。更多信息,请参见CreateLoadBalancerUDPListener。 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold |
健康检查连续失败多少次后,将后端服务器的健康检查状态由success判定为fail。取值范围为[2, 10],默认值:3。更多信息,请参见CreateLoadBalancerUDPListener。 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval |
健康检查的时间间隔。单位:秒。取值范围[1, 50],默认值:2。更多信息,请参见CreateLoadBalancerUDPListener。 |
v1.9.3及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "5"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout: "10"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "3"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "3"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: UDP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
为TCP和UDP监听关闭健康检查
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch
|
描述 |
支持的CCM版本 |
|
TCP及UDP监听是否开启健康检查。取值:
默认值: |
v2.6.0及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-switch: "off" #关闭健康检查
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
设置HTTP类型的健康检查
Annotation:多个,如下表所示。
|
注解 |
描述 |
支持的CCM版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag |
取值:
默认值: |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type |
健康检查类型。取值:
默认值: 更多信息,请参见CreateLoadBalancerHTTPListener。 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-uri |
用于健康检查的URI。当健康检查类型为TCP模式时,无需配置此Annotation参数。 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-httpcode |
健康检查正常的HTTP状态码,多个状态码用英文半角逗号分隔。取值:
默认值: 更多信息,请参见CreateLoadBalancerHTTPListener。 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain |
用于健康检查的域名,取值:
更多信息,请参见CreateLoadBalancerHTTPListener。 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout |
接收来自运行状况检查的响应需要等待的时间,适用于HTTP模式。如果后端ECS在指定的时间内没有正确响应,则判定为健康检查失败。 单位:秒。取值范围[1, 300]。 如果 更多信息,请参见CreateLoadBalancerHTTPListener。 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold |
健康检查连续成功多少次后,将后端服务器的健康检查状态由fail判定为success。 取值范围为[2, 10],默认值:3。更多信息,请参见CreateLoadBalancerHTTPListener。 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold |
健康检查连续失败多少次后,将后端服务器的健康检查状态由success判定为fail。取值范围为[2, 10],默认值:3。更多信息,请参见CreateLoadBalancerHTTPListener。 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval |
健康检查的时间间隔。单位:秒。取值范围[1, 50],默认值:2。更多信息,请参见CreateLoadBalancerHTTPListener。 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
多个值之间用英文半角逗号(,)分隔,例如 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method |
监听HTTP类型健康检查的健康检查方法。取值:
|
v2.3.0及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type: "http"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-uri: "/test/index.html"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold: "4"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold: "4"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout: "10"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval: "3"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
# 设置健康检查HTTP状态码,可选
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-httpcode: "http_4xx"
# 设置健康检查域名,可选
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain: "www.aliyun.com"
# 设置健康检查方法,可选
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-method: "head"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
为监听设置连接优雅中断
Annotation:多个,如下表所示。以下所有Annotation必选。
仅支持TCP和UDP协议。
|
注解 |
描述 |
支持的CCM版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain |
是否开启连接优雅中断。取值:
|
v2.0.1及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout |
设置连接优雅中断超时时间。单位:秒。取值范围为[10, 900]。 |
v2.0.1及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout: "30"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
为监听配置额外请求头
Annotation:多个,如下表所示。
仅支持HTTP和HTTPS协议。
|
注解 |
描述 |
支持的CCM版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
多个值之间用英文半角逗号(,)分隔,例如 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-proto |
配置是否通过X-Forwarded-Proto头字段获取CLB的监听协议。取值:
默认值: |
v2.1.0及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-slbport |
配置是否通过XForwardedFor_SLBPORT头字段获取负载均衡实例的监听端口。取值:
默认值: |
v2.9.1及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-clientsrcport |
配置是否通过XForwardedFor_ClientSrcPort头字段获取访问负载均衡实例客户端的端口。取值:
默认值: |
v2.9.1及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-proto: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-slbport: "on"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-xforwardedfor-clientsrcport: "on"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
为监听设置连接空闲超时时间
Annotation:多个,如下表所示。
仅支持HTTP和HTTPS协议。
|
注解 |
描述 |
支持的CCM版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
多个值之间用英文半角逗号(,)分隔,例如 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout |
为监听设置连接空闲超时时间。单位:秒。取值范围[1, 60]。 默认值:15 |
v2.1.0及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-idle-timeout: "30"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
关闭监听的HTTP2特性
Annotation:多个,如下表所示。
仅支持HTTPS协议。
|
注解 |
描述 |
支持的CCM版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
多个值之间用英文半角逗号(,)分隔,例如 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id |
阿里云上的证书ID。 请登录CLB控制台,在证书管理页面查看证书ID。 说明
如需创建证书,请参见选择阿里云签发证书。 |
v1.9.3.164-g2105d2e-aliyun及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-http2-enabled |
是否开启HTTP2特性。取值:
默认值: |
v2.1.0及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-http2-enabled: "off"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
为监听配置指定请求超时时间
Annotation:多个,如下表所示。
仅支持HTTP和HTTPS协议。
|
注解 |
描述 |
支持的CCM版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
多个值之间用英文半角逗号(,)分隔,例如 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-request-timeout |
指定请求超时时间。单位:秒。取值范围为[1, 180]。默认值:60 在超时时间内,后端服务器一直没有响应,负载均衡将放弃等待,客户端返回HTTP 504错误码。 |
v2.3.0及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-request-timeout: "60"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
为监听指定链接超时时间
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-established-timeout
仅支持TCP协议。
|
描述 |
支持的CCM版本 |
|
连接超时时间。单位:秒。取值范围为[10, 900]。更多信息,请参见CreateLoadBalancerTCPListener。 |
v2.3.0及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-established-timeout: "60"
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
为监听配置安全策略
Annotation:多个,如下表所示。
仅支持HTTPS协议。
|
注解 |
描述 |
支持的CCM版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port |
多个值之间用英文半角逗号(,)分隔,例如 |
v1.9.3及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id |
阿里云上的证书ID。 请登录CLB控制台,在证书管理页面查看证书ID。 说明
如需创建证书,请参见选择阿里云签发证书。 |
v1.9.3.164-g2105d2e-aliyun及以上版本 |
|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy |
安全策略包含HTTPS可选的TLS协议版本和配套的加密算法套件。更多信息,请参见CreateLoadBalancerHTTPSListener。取值:
默认值: |
v2.4.0及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: "https:443,http:80"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-tls-cipher-policy: "tls_cipher_policy_1_2"
name: nginx
namespace: default
spec:
ports:
- name: https
port: 443
protocol: TCP
targetPort: 443
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
为监听同时配置TCP及UDP协议
该功能要求Kubernetes集群版本不低于v1.24。关于如何升级集群版本,请参见升级ACK集群K8s版本。
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
spec:
ports:
- name: tcp
port: 80
protocol: TCP
targetPort: 80
- name: udp
port: 80
protocol: UDP
targetPort: 81
selector:
app: nginx
sessionAffinity: None
type: LoadBalancer
为TCP和UDP类型的监听配置Proxy Protocol协议
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol
在集群内通过CLB IP访问服务时,请求流量可能会在集群内部被截断,导致访问异常。请参见为Service设置Hostname,通过添加Annotation来强制流量绕行CLB。详见在集群内访问LoadBalancer Service的External IP的注意事项。
|
描述 |
支持的CCM版本 |
|
为TCP及UDP监听配置ProxyProtocol协议。ProxyProtocol协议配置后,可通过ProxyProtocol协议携带客户端源地址到后端服务器。取值:
默认值: 重要
该功能不支持在线平滑迁移,切换ProxyProtocol需要业务停服升级,请谨慎配置。 |
v2.6.0及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-proxy-protocol: "on"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
后端服务器组的典型操作
使用指定Label的Worker节点作为后端服务器
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label
|
描述 |
支持的CCM版本 |
|
指定通过Label指定CLB后端挂载哪些Worker节点。多个Label以英文半角逗号(,)分隔,例如 |
v1.9.3及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label: "failure-domain.beta.kubernetes.io/zone=ap-southeast-5a"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
使用Pod所在的节点作为后端服务器
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler
默认externalTrafficPolicy为Cluster模式,会将集群中所有节点挂载到后端服务器。Local模式仅将Pod所在节点作为后端服务器。
|
描述 |
支持的CCM版本 |
|
调度算法。取值:
默认值: |
v1.9.3及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "wrr"
name: nginx
namespace: default
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
run: nginx
type: LoadBalancer
移除CLB后端unschedulable状态的节点
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend
|
描述 |
支持的CCM版本 |
|
从CLB后端移除SchedulingDisabled节点。取值:
默认值: |
v1.9.3.164-g2105d2e-aliyun及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend: "on"
name: nginx
spec:
externalTrafficPolicy: Local
ports:
- name: http
port: 30080
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
直接将Pod ENI挂载到CLB后端
Annotation:service.beta.kubernetes.io/backend-type
|
描述 |
默认值 |
支持的CCM版本 |
|
CLB后端服务器类型。取值:
|
|
v1.9.3.164-g2105d2e-aliyun及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/backend-type: "eni"
name: nginx
spec:
ports:
- name: http
port: 30080
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
复用已有虚拟服务器组
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vgroup-port
支持复用已有虚拟服务器组,仅在复用已有CLB场景下生效。具体的使用示例,请参见通过复用已有负载均衡实现跨集群部署服务。
设置Service接收流量的权重
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-weight
在多个Service复用同一个CLB的场景下,支持通过此Annotation设置当前Service接收流量的权重。该Annotation仅在复用已有虚拟服务器组场景下生效。具体的使用示例,请参见通过复用已有负载均衡实现跨集群部署服务。
忽略更新后端服务器权重
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update
|
描述 |
支持的CCM版本 |
|
在Service同步过程中,跳过虚拟服务器组中后端服务器权重的更新。此配置适用于需要通过CCM以外的机制手动管理后端服务器权重的场景。取值:
默认值: |
v2.11.1及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-ignore-weight-update: "on"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer
设置后端服务器的默认权重
Annotation:service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight
|
描述 |
支持的CCM版本 |
|
设置服务器组内服务器的默认权重。权重越高,该服务器接收的请求流量越多。 取值范围:[0, 100]。未配置时,系统将根据当前网络类型自动使用对应的默认权重。 当后端实例为ECS且Service的 |
v2.14.0及以上版本 |
apiVersion: v1
kind: Service
metadata:
annotations:
# 设置服务器组中服务器的默认权重为 35
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-default-weight: "35"
name: nginx
namespace: default
spec:
ports:
- port: 443
protocol: TCP
targetPort: 443
selector:
run: nginx
type: LoadBalancer