ACK中通过Annotation配置负载均衡
ACK中通过Annotation配置负载均衡
默认使用share规格的负载均衡,阿里云已经停用了,导致控制器无法创建新的负载均衡,需要通过service的annotation指定规格 service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: "slb.s1.small"
并且很多k8s service 的annotation不可用,比如指定使用已创建的负载均衡(推荐)service.beta.kubernetes.io/alicloud-loadbalancer-id:lb-xxxx
- 创建一个私网类型的负载均衡
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
- 指定负载均衡规格
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
使用已有的负载均衡
默认情况下,使用已有的负载均衡实例,不会覆盖监听,如要强制覆盖已有监听,请配置
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners
为 true。说明 复用已有的负载均衡默认不覆盖已有监听,因为以下两点原因:
- 如果已有负载均衡的监听上绑定了业务,强制覆盖可能会引发业务中断。
- 由于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_LOADBALANCER_ID}" name: nginx namespace: default spec: ports: - port: 443 protocol: TCP targetPort: 443 selector: run: nginx type: LoadBalancer
使用已有的负载均衡,并强制覆盖已有监听
强制覆盖已有监听,如果监听端口冲突,则会删除已有监听。
注意 复用已有SLB且设置
forceoverride
为true
时,请勿多个Service复用同一个SLB的同一个监听,否则会导致监听配置冲突。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
创建负载均衡时,指定主备可用区
- 某些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
创建按带宽付费的负载均衡
仅支持公网类型的负载均衡实例。
其他限制,请参见修改公网负载均衡实例的计费方式。
以下两项Annotation必选。
此处提供的是示例值,请根据实际业务需要自行设置。
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
说明 service.beta.kubernetes.io/alibaba-cloud-loadbalancer-bandwidth为带宽峰值。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!