如何在 Amazon EKS 中自動探索 Application Load Balancer 使用的子網路?

2 分的閱讀內容
0

我想在 Amazon Elastic Kubernetes Service (Amazon EKS) 中自動探索 Application Load Balancer (ALB) 使用的子網路。

簡短描述

您可以標記 AWS 子網路,允許 AWS Load Balancer 控制器自動探索 Application Load Balancer 使用的子網路。

解決方法

1.    為 Amazon EKS 叢集部署 ](https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html)AWS Load Balancer 控制器[。

2.    確認是否已安裝 AWS Load Balancer 控制器:

kubectl get deployment -n kube-system aws-load-balancer-controller

**注意:**如果該部署已部署在不同的命名空間中,請使用適當的命名空間取代 -n kube-system

3.    使用下列註釋在叢集上建立 Kubernetes 傳入資源:

annotations:
    kubernetes.io/ingress.class: alb

**注意:**AWS Load Balancer 控制器會建立負載平衡器。傳入資源將 Application Load Balancer 設定為將 HTTP(S) 流量路由至叢集內的不同 Pod。

4.    新增內部面向網際網路的註釋,以指定傳入建立負載平衡器的位置:

alb.ingress.kubernetes.io/scheme: internal

-或-

alb.ingress.kubernetes.io/scheme: internet-facing

注意:選擇內部以建立內部負載平衡器,或選擇面向網際網路以建立公有負載平衡器。

5.    使用標籤允許 Application Load Balancer 傳入控制器使用自動探索來建立負載平衡器。例如:

kubernetes.io/role/internal-elb                Set to 1 or empty tag value for internal load balancers
kubernetes.io/role/elb                         Set to 1 or empty tag value for internet-facing load balancers

**注意:**您可以使用標籤進行自動探索,而不是手動建立 alb.ingress.kubernetes.io/subnets 註釋。

具有內部負載平衡器之叢集的使用正確標籤的子網路範例:

kubernetes.io/role/internal-elb          1

具有公有負載平衡器之叢集的使用正確標籤的子網路範例:

kubernetes.io/role/elb                     1

**注意:**對於叢集 1.18 版及更舊版本,Amazon EKS 會將以下標籤新增至叢集建立期間傳入的所有子網路。標籤並未新增至叢集 1.19 版。如果您正在使用標籤,而且將叢集從舊版更新為 1.19 版,則無需再次新增該標籤。該標籤會保留在您的子網路上。您可以使用下列標籤來控制 Application Load Balancer 的佈建位置。除了自動佈建 Application Load Balancer 所需的子網路標籤之外,還可以使用此標籤。

kubernetes.io/cluster/$CLUSTER_NAME    shared

**重要事項:**AWS Load Balancer 控制器工作流程會檢查子網路標籤的值是否為 " " (空字串) 和 1。如果是私有子網路,請將 kubernetes.io/role/internal-elb 標籤的值設定為空字串或 1。如果是公有子網路,請將 kubernetes.io/role/elb 標籤的值設定為空字串或 1。這些標籤允許您從 Application Load Balancer 的 Amazon EKS VPC 子網路自動探索子網路。

6.    確認您的 Amazon EKS VPC 子網路是否具有正確標籤:

aws ec2 describe-subnets --subnet-ids your-subnet-xxxxxxxxxxxxxxxxx

7.    部署範例應用程式,以確認 AWS Load Balancer 控制器是否因傳入物件而建立 Application Load Balancer:

kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/main/docs/examples/2048/2048_full.yaml

8.    確認傳入資源已建立,並與 Application Load Balancer 建立關聯:

kubectl get ingress/2048-ingress -n 2048-game

根據您在傳入物件和子網路中定義的註釋 (alb.ingress.kubernetes.io/scheme:),建立內部或面向網際網路的負載平衡器。


AWS 官方
AWS 官方已更新 2 年前