網絡型負載均衡NLB(Network Load Balancer)是阿里云面向萬物互聯時代推出的新一代四層負載均衡,支持超高性能和自動彈性能力,具有更高的可用性,能夠進一步提升網關流量的穩定性。ASM網關支持使用NLB。配置ASM網關的ServiceType為LoadBalancer時,默認會關聯一個CLB作為網關Service的負載均衡器。本文介紹如何關聯一個NLB作為ASM網關的負載均衡器。
前提條件
已添加Kubernetes集群到ASM實例,且滿足以下條件:
Kubernetes集群版本為v1.24及以上且CCM版本為v2.5.0及以上。
ASM實例版本為1.18及以上。
ACK集群所在VPC至少有兩個可用區的VSwitch。
操作步驟
登錄ASM控制臺,在左側導航欄,選擇 。
在網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇
。您可以選擇使用界面方式或YAML方式創建入口網關。
使用界面創建
在入口網關頁面,單擊創建。本文只對NLB類型負載均衡的參數進行說明。其他配置參數,請參見創建入口網關。
配置項
說明
網絡型負載均衡 NLB
僅當網關服務類型選擇LoadBalancer時,需要進行此配置。
支持公網訪問和私網訪問。
新建負載均衡
控制臺默認為新建負載均衡,您可以按需選擇使用已有負載均衡。
選擇此選項后,您需要在下方選擇NLB可用區中選擇至少兩個可用區對應的虛擬交換機。
使用已有負載均衡
選擇此選項后,您需要在下方選擇已有負載均衡中選擇已經創建的NLB負載均衡。
重要建議您為每個Kubernetes服務分配一個負載均衡。如果多個Kubernetes服務復用同一個負載均衡,存在以下風險和限制:
使用已有的負載均衡會強制覆蓋已有監聽,可能會導致您的應用不可訪問。
Kubernetes通過Service創建的負載均衡不能復用,只能復用您手動在控制臺(或調用OpenAPI)創建的負載均衡。
復用同一個負載均衡的多個Service不能有相同的前端監聽端口,否則會造成端口沖突。
復用負載均衡時,監聽的名字以及虛擬服務器組的名字被Kubernetes作為唯一標識符。請勿修改監聽和虛擬服務器組的名字。
不支持跨集群、跨地域復用負載均衡。
使用YAML創建
在入口網關頁面,單擊使用YAML創建,配置網關名稱為ingressgateway-nlb-test,選擇命名空間為istio-system,配置如下YAML。
YAML中需要配置
loadBalancerClass
為alibabacloud.com/nlb
。NLB不需要指定規格,但是需要指定至少兩個可用區。apiVersion: istio.alibabacloud.com/v1 kind: IstioGateway metadata: name: ingressgateway-nlb-test namespace: istio-system spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - podAffinityTerm: labelSelector: matchExpressions: - key: istio operator: In values: - ingressgateway topologyKey: kubernetes.io/hostname weight: 1 autoCreateGatewayYaml: false clusterIds: - ${當前網格中已添加的集群ID} disableContainerPortExposed: true dnsPolicy: ClusterFirst externalTrafficPolicy: Local gatewayType: ingress hostNetwork: false ports: - name: http-0 port: 80 protocol: HTTP targetPort: 80 - name: https-1 port: 443 protocol: HTTPS targetPort: 443 replicaCount: 2 resources: limits: cpu: "2" memory: 4G requests: cpu: 200m memory: 256Mi rollingMaxSurge: 25% rollingMaxUnavailable: 25% runAsRoot: true serviceAnnotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain: "on" service.beta.kubernetes.io/alibaba-cloud-loadbalancer-connection-drain-timeout: "10" service.beta.kubernetes.io/alicloud-loadbalancer-address-type: internet service.beta.kubernetes.io/alibaba-cloud-loadbalancer-zone-maps: ${可用區ID}:${該可用區下的一個VSwitch ID},${另一個可用區ID}:${該可用區下的一個VSwitch ID} # 例如cn-hangzhou-g:vsw-bp1xxxxxxxxxx,cn-hangzhou-j:vsw-bp1xxxxxxxxxx serviceType: LoadBalancer loadBalancerClass: alibabacloud.com/nlb
創建完成后,界面顯示如下。與使用CLB的網關不同,使用NLB的網關,服務地址顯示為一個域名而不是一個IP。同時,由于創建入口網關時指定了兩個可用區,該域名會綁定兩個IP地址。
您可以登錄NLB控制臺,查看當前NLB的狀態。關于NLB的更多信息,請參見通過Annotation配置網絡型負載均衡NLB和NLB產品計費。