通过负载均衡(Server Load Balancer)访问服务
您可以使用阿里云负载均衡来访问服务。
背景信息
如果您的集群的cloud-controller-manager版本大于等于v1.9.3,对于指定已有SLB,系统默认不再为该SLB处理监听,用户可以通过设置service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"
参数来显示启用监听配置,或者手动配置该SLB的监听规则。
root@master # kubectl get pod -n kube-system -o yaml|grep image:|grep cloud-con|uniq
image: registry-vpc.cn-hangzhou.aliyuncs.com/acs/cloud-controller-manager-amd64:v1.9.3
注意事项
- Cloud Controller Manager(简称CCM)会为
Type=LoadBalancer
类型的Service创建或配置阿里云负载均衡(SLB),包含SLB、监听、虚拟服务器组等资源。 - 对于非LoadBalancer类型的service则不会为其配置负载均衡,这包含如下场景:当用户将
Type=LoadBalancer
的service变更为Type!=LoadBalancer
时,CCM也会删除其原先为该Service创建的SLB(用户通过service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id
指定的已有SLB除外)。 - 自动刷新配置:CCM使用声明式API,会在一定条件下自动根据service的配置刷新阿里云负载均衡配置,所有用户自行在SLB控制台上修改的配置均存在被覆盖的风险(使用已有SLB同时不覆盖监听的场景除外),因此不能在SLB控制台手动修改Kubernetes创建并维护的SLB的任何配置,否则有配置丢失的风险。
- 同时支持为serivce指定一个已有的负载均衡,或者让CCM自行创建新的负载均衡。但两种方式在SLB的管理方面存在一些差异:
指定已有SLB
- 需要为Service设置annotation:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id
。 - SLB配置:此时CCM会使用该SLB做为Service的SLB,并根据其他annotation配置SLB,并且自动的为SLB创建多个虚拟服务器组(当集群节点变化的时候,也会同步更新虚拟服务器组里面的节点)。
- 监听配置:是否配置监听取决于
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners:
是否设置为true。 如果设置为false,那么CCM不会为SLB管理任何监听配置。如果设置为true,那么CCM会尝试为SLB更新监听,此时CCM会根据监听名称判断SLB上的监听是否为k8s维护的监听(名字的格式为k8s/Port/ServiceName/Namespace/ClusterID),若Service声明的监听与用户自己管理的监听端口冲突,那么CCM会报错。 - SLB的删除: 当Service删除的时候CCM不会删除用户通过id指定的已有SLB。
- 需要为Service设置annotation:
- CCM管理的SLB
- CCM会根据service的配置自动的创建配置SLB、监听、虚拟服务器组等资源,所有资源归CCM管理,因此用户不得手动在SLB控制台更改以上资源的配置,否则CCM在下次Reconcile的时候将配置刷回service所声明的配置,造成非用户预期的结果。
- SLB的删除:当Service删除的时候CCM会删除该SLB。
- 后端服务器更新
- CCM会自动的为该Service对应的SLB刷新后端虚拟服务器组。当Service对应的后端Endpoint发生变化的时候或者集群节点变化的时候都会自动的更新SLB的后端Server。
spec.externalTrafficPolicy = Cluster
模式的Service,CCM默认会将所有节点挂载到SLB的后端(使用BackendLabel标签配置后端的除外)。由于SLB限制了每个ECS上能够attach的SLB的个数(quota),因此这种方式会快速的消耗该quota,当quota耗尽后,会造成Service
Reconcile失败。解决的办法,可以使用Local模式的Service。spec.externalTrafficPolicy = Local
模式的Service,CCM默认只会讲Service对应的Pod所在的节点加入到SLB后端。这会明显降低quota的消耗速度。同时支持四层源IP保留。- 任何情况下CCM不会将Master节点作为SLB的后端。
- CCM默认不会从SLB后端移除被kubectl drain/cordon的节点。如需移除节点,请设置
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend
为on。说明 如果是v1.9.3.164-g2105d2e-aliyun之前的版本,CCM默认会从SLB后端移除被kubectl drain/cordon的节点。
通过命令行操作
方法一:
方法二:
通过 Kubernetes Dashboard 操作
通过控制台操作
更多信息
阿里云负载均衡还支持丰富的配置参数,包含健康检查、收费类型、负载均衡类型等参数。详细信息参见负载均衡配置参数表。
注释
阿里云可以通过注释annotations
的形式支持丰富的负载均衡功能。
- 创建一个公网类型的负载均衡
apiVersion: v1 kind: Service metadata: name: nginx namespace: default spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: run: nginx type: LoadBalancer
- 创建一个私网类型的负载均衡
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
- 创建HTTP类型的负载均衡
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类型的负载均衡
需要先在阿里云控制台上创建一个证书并记录 cert-id,然后使用如下 annotation 创建一个 HTTPS 类型的 SLB。
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: 443 selector: run: nginx type: LoadBalancer
- 限制负载均衡的带宽
只限制负载均衡实例下的总带宽,所有监听共享实例的总带宽,参见共享实例带宽。
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: "paybybandwidth" service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth: "100" name: nginx namespace: default spec: ports: - port: 443 protocol: TCP targetPort: 443 selector: run: nginx type: LoadBalancer
- 指定负载均衡规格
负载均衡规格可参见CreateLoadBalancer。
apiVersion: v1 kind: Service metadata: annotations: 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
- 使用已有的负载均衡
- 默认情况下,使用已有的负载均衡实例,不会覆盖监听,如要强制覆盖已有监听,请配置
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners
为ture说明 复用已有的负载均衡默认不覆盖已有监听,因为以下两点原因:- 如果已有负载均衡的监听上绑定了业务,强制覆盖可能会引发业务中断。
- 由于CCM目前支持的后端配置有限,无法处理一些复杂配置。如果有复杂的后端配置需求,可以在不覆盖监听的情况下,通过控制台自行配置监听。
如存在以上两种情况不建议强制覆盖监听,如果已有负载均衡的监听端口不再使用,则可以强制覆盖。
- 使用已有的负载均衡暂不支持添加额外标签(
annotation: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags
)
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LOADBALACER_ID}" name: nginx namespace: default spec: ports: - port: 443 protocol: TCP targetPort: 443 selector: run: nginx type: LoadBalancer
- 默认情况下,使用已有的负载均衡实例,不会覆盖监听,如要强制覆盖已有监听,请配置
- 使用已有的负载均衡,并强制覆盖已有监听
强制覆盖已有监听,如果监听端口冲突,则会删除已有监听。
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: "${YOUR_LOADBALACER_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: LoadBalancere: LoadBalancer
- 使用指定Label的worker节点作为后端服务器
多个Label以逗号分隔。例如
"k1=v1,k2=v2"
。多个label之间是and的关系。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
- 为TCP类型的负载均衡配置会话保持时间
- 参数
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-persistence-time
仅对TCP协议的监听生效。 - 如果负载均衡实例配置了多个TCP协议的监听端口,则默认将该配置应用到所有TCP协议的监听端口。
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)
- 仅支持HTTP及HTTPS协议的负载均衡实例。
- 如果配置了多个HTTP或者HTTPS的监听端口,该会话保持默认应用到所有HTTP和HTTPS监听端口。
- 配置insert cookie,以下四项annotation必选。
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
- 为HTTP&HTTPS协议的负载均衡配置会话保持(server cookie)
- 仅支持HTTP及HTTPS协议的负载均衡实例。
- 如果配置了多个HTTP或者HTTPS的监听端口,该会话保持默认应用到所有HTTP和HTTPS监听端口。
- 配置server cookie,以下四项annotation必选。
- cookie名称(service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie)只能包含字母、数字、‘_’和‘-’。
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: "server" service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie: "${YOUR_COOKIE}" 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
- 创建负载均衡时,指定主备可用区
- 某些region的负载均衡不支持主备可用区,例如ap-southeast-5。
- 一旦创建,主备可用区不支持修改。
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid: "ap-southeast-5a" service.beta.kubernetes.io/alibaba-cloud-loadbalancer-slave-zoneid: "ap-southeast-5a" name: nginx namespace: default spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: run: nginx type: LoadBalancer
- 使用Pod所在的节点作为后端服务器
默认
externalTrafficPolicy
为Cluster模式,会将集群中所有节点挂载到后端服务器。Local模式仅将Pod所在节点作为后端服务器。apiVersion: v1 kind: Service metadata: name: nginx namespace: default spec: externalTrafficPolicy: Local ports: - port: 80 protocol: TCP targetPort: 80 selector: run: nginx type: LoadBalancer
- 创建私有网络类型(VPC)的负载均衡
- 创建私有网络类型的负载均衡,以下两个annotation必选。
- 私网负载均衡支持专有网络(VPC)和经典网络(Classic),两者区别参见实例概述。
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "intranet" service.beta.kubernetes.io/alibaba-cloud-loadbalancer-network-type: "vpc" name: nginx namespace: default spec: ports: - port: 443 protocol: TCP targetPort: 443 selector: run: nginx type: LoadBalancer
- 创建按流量付费的负载均衡
- 仅支持公网类型的负载均衡实例
- 以下两项annotation必选
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth: "45" service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: "paybybandwidth" name: nginx namespace: default spec: ports: - port: 443 protocol: TCP targetPort: 443 selector: run: nginx type: LoadBalancer
- 创建带健康检查的负载均衡
- 设置TCP类型的健康检查
- TCP端口默认开启健康检查,且不支持修改,即
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag annotation
无效。 - 设置TCP类型的健康检查,以下所有annotation必选。
apiVersion: v1 kind: Service metadata: annotations: 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
- TCP端口默认开启健康检查,且不支持修改,即
- 设置HTTP类型的健康检查
设置HTTP类型的健康检查,以下所有的annotation必选。
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" name: nginx namespace: default spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: run: nginx type: LoadBalancer
- 设置TCP类型的健康检查
- 为负载均衡设置调度算法
- wrr(默认值):权重值越高的后端服务器,被轮询到的次数(概率)也越高。
- wlc:除了根据每台后端服务器设定的权重值来进行轮询,同时还考虑后端服务器的实际负载(即连接数)。当权重值相同时,当前连接数越小的后端服务器被轮询到的次数(概率)也越高。
- rr:按照访问顺序依次将外部请求依序分发到后端服务器。
apiVersion: v1 kind: Service metadata: annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler: "wlc" name: nginx namespace: default spec: ports: - port: 443 protocol: TCP targetPort: 443 selector: run: nginx type: LoadBalancer
- 创建带有访问控制的负载均衡
- 需要先在阿里云控制台上创建一个访问控制并记录acl-id,然后使用如下 annotation 创建一个带有访问控制的负载均衡实例。
- 白名单适合只允许特定IP访问的场景,black黑名单适用于只限制某些特定IP访问的场景。
- 创建带有访问控制的负载均衡,以下三项annotation必选。
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
- 为负载均衡指定虚拟交换机
- 通过阿里云专有网络控制台查询交换机ID,然后使用如下的annotation为负载均衡实例指定虚拟交换机。
- 为负载均衡指定虚拟交换机,以下两项annotation必选。
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
- 为负载均衡指定转发端口
- 端口转发是指将http端口的请求转发到https端口上。
- 设置端口转发需要先在阿里云控制台上创建一个证书并记录cert-id。
- 如需设置端口转发,以下三项annotation必选。
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: 443 - name: http port: 80 protocol: TCP targetPort: 80 selector: run: nginx type: LoadBalancer
- 为负载均衡添加额外标签
多个tag以逗号分隔,例如
"k1=v1,k2=v2"
。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
- 移除SLB后端unscheduleable状态的节点
kubectl cordon
与kubectl drain
命令会将节点置为unscheduleable状态,默认service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend
的取值为off,此时不会将处于unscheduleable状态的节点从SLB的后端服务器组移除。若需要从SLB的后端服务器组移除unscheduleable状态的节点,请将service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend的
的取值设置为on。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挂载到SLB后端
支持在Terway 网络模式下,通过annotation:
service.beta.kubernetes.io/backend-type:"eni"
将Pod直接挂载到SLB后端,提升网络转发性能。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
- 注释的内容是区分大小写的。
- 自2019年9月11日起,annotation字段alicloud更新为alibaba-cloud。
例如:
更新前:
service.beta.kubernetes.io/alicloud-loadbalancer-id
更新后:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id
系统将继续兼容alicloud的写法,用户无需做任何修改,敬请注意。
注释 | 类型 | 描述 | 默认值 | 支持的版本 |
---|---|---|---|---|
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port | string | 多个值之间由逗号分隔,例如:https:443,http:80 |
无 | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type | string | 取值可以是internet或者intranet | internet | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-slb-network-type | string | 负载均衡的网络类型,取值可以是classic或者vpc
取值为vpc时,需设置 |
classic | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type | string | 取值可以是paybytraffic或者paybybandwidth | paybytraffic | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id | string | 负载均衡实例的 ID。通过 service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id指定您已有的SLB,默认情况下,使用已有的负载均衡实例,不会覆盖监听,如要强制覆盖已有监听,请配置service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners为true。 | 无 | v1.9.3.59-ge3bc999-aliyun及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-backend-label | string | 通过 label 指定 SLB 后端挂载哪些worker节点。 | 无 | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec | string | 负载均衡实例的规格。可参见:CreateLoadBalancer | 无 | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-persistence-timeout | string | 会话保持时间。
仅针对TCP协议的监听,取值:0-3600(秒) 默认情况下,取值为0,会话保持关闭。 可参见:CreateLoadBalancerTCPListener |
0 | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session | string | 是否开启会话保持。取值:on | off
说明 仅对HTTP和HTTPS协议的监听生效。
可参见:CreateLoadBalancerHTTPListener和CreateLoadBalancerHTTPSListener |
off | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type | string | cookie的处理方式。取值:
说明
可参见:CreateLoadBalancerHTTPListener和CreateLoadBalancerHTTPSListener |
无 | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie-timeout | string | Cookie超时时间。取值:1-86400(秒)
说明 当service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session为on且service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type为insert时,该参数必选。
可参见:CreateLoadBalancerHTTPListener和CreateLoadBalancerHTTPSListener |
无 | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cookie | string | 服务器上配置的Cookie名称。
长度为1-200个字符,只能包含ASCII英文字母和数字字符,不能包含逗号、分号或空格,也不能以$开头。 说明
当service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session为on且service.beta.kubernetes.io/alibaba-cloud-loadbalancer-sticky-session-type为server时,该参数必选。 可参见:CreateLoadBalancerHTTPListener和CreateLoadBalancerHTTPSListener |
无 | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid | string | 主后端服务器的可用区ID。 | 无 | v1.9.3.10-gfb99107-aliyun及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-slave-zoneid | string | 备后端服务器的可用区ID。 | 无 | v1.9.3.10-gfb99107-aliyun及以上版本 |
externalTrafficPolicy | string | 哪些节点可以作为后端服务器,取值:
|
Cluster | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners | string | 绑定已有负载均衡时,是否强制覆盖该SLB的监听。 | false:不覆盖 | v1.9.3.59-ge3bc999-aliyun及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth | string | 负载均衡的带宽,仅适用于公网类型的负载均衡。 | 50 | v1.9.3.10-gfb99107-aliyun及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id | string | 阿里云上的证书 ID。您需要先上传证书 | 无 | v1.9.3.164-g2105d2e-aliyun及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-flag | string | 取值是on | off
|
默认为off。TCP 不需要改参数。因为 TCP 默认打开健康检查,用户不可设置。 | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-type | string | 健康检查类型,取值:tcp | http。
可参见:CreateLoadBalancerTCPListener |
tcp | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-uri | string | 用于健康检查的URI。
说明 当健康检查类型为TCP模式时,无需配置该参数。
可参见:CreateLoadBalancerTCPListener |
无 | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-port | string | 健康检查使用的端口。取值:
可参见:CreateLoadBalancerTCPListener |
无 | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-healthy-threshold | string | 健康检查连续成功多少次后,将后端服务器的健康检查状态由fail判定为success。
取值:2-10 可参见:CreateLoadBalancerTCPListener |
3 | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-unhealthy-threshold | string | 健康检查连续失败多少次后,将后端服务器的健康检查状态由success判定为fail。取值:
2-10 可参见:CreateLoadBalancerTCPListener |
3 | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval | string | 健康检查的时间间隔。
取值:1-50(秒) 可参见:CreateLoadBalancerTCPListener |
2 | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout | string | 接收来自运行状况检查的响应需要等待的时间,适用于TCP模式。如果后端ECS在指定的时间内没有正确响应,则判定为健康检查失败。
取值:1-300(秒) 说明 如果service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout的值小于service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval的值,则service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-connect-timeout无效,超时时间为service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval的值。
可参见:CreateLoadBalancerTCPListener |
5 | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout | string | 接收来自运行状况检查的响应需要等待的时间,适用于HTTP模式。如果后端ECS在指定的时间内没有正确响应,则判定为健康检查失败。
取值:1-300(秒) 说明 如果 service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout的值小于service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval的值,则 service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-timeout无效,超时时间为 service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-interval的值。
可参见:CreateLoadBalancerTCPListener |
5 | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-domain | string | 用于健康检查的域名。
|
无 | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-health-check-httpcode | string | 健康检查正常的HTTP状态码,多个状态码用逗号(,)分割。取值:
默认值为http_2xx。 | http_2xx | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-scheduler | string | 调度算法。取值wrr | wlc| rr。
|
wrr | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-status | string | 是否开启访问控制功能。取值: on | off | off | v1.9.3.164-g2105d2e-aliyun及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-id | string | 监听绑定的访问策略组ID。当AclStatus参数的值为on时,该参数必选。 | 无 | v1.9.3.164-g2105d2e-aliyun及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-acl-type | string | 访问控制类型。
取值:white | black。
|
无 | v1.9.3.164-g2105d2e-aliyun及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id | string | 负载均衡实例所属的VSwitch ID。设置该参数时需同时设置addresstype为intranet。 | 无 | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-forward-port | string | 将HTTP请求转发至HTTPS指定端口。取值如80:443 |
无 | v1.9.3.164-g2105d2e-aliyun及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-additional-resource-tags | string | 需要添加的Tag列表,多个标签用逗号分隔。例如:"k1=v1,k2=v2" |
无 | v1.9.3及以上版本 |
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-remove-unscheduled-backend | string | 从slb后端移除SchedulingDisabled Node。取值on | off | off | v1.9.3.164-g2105d2e-aliyun及以上版本 |
service.beta.kubernetes.io/backend-type | string | 支持在Terway eni网络模式下,通过设定改参数为"eni" ,可将Pod直接挂载到SLB后端,提升网络转发性能。另外当后端Pod为虚拟节点上的eci Pod时,也需要设置此参数。取值:eni |
无 | v1.9.3.164-g2105d2e-aliyun及以上版本 |
发布者:佚, 佚名,转转请注明出处:https://www.cms2.cn/aliyun/csk/5440.html