

 **協助改進此頁面** 

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

若要為本使用者指南貢獻內容，請點選每個頁面右側面板中的**在 GitHub 上編輯此頁面**連結。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 AWS Load Balancer控制器路由網際網路流量
<a name="aws-load-balancer-controller"></a>

**提示**  
 [註冊](https://aws-experience.com/emea/smb/events/series/get-hands-on-with-amazon-eks?trk=4a9b4147-2490-4c63-bc9f-f8a84b122c8c&sc_channel=el)即將舉行的 Amazon EKS 研討會。

The AWS Load Balancer 控制器會管理 Kubernetes 叢集的 AWS Elastic Load Balancer。您可透過此控制器將叢集應用程式開放至網際網路。控制器會佈建指向叢集服務或輸入資源的 AWS 負載平衡器。換言之，控制器會建立單一 IP 位址或 DNS 名稱，並將其指向叢集中的多個 Pod。

![\[架構圖。示意圖流程：網際網路使用者的流量到達 Amazon 負載平衡器。負載平衡器將流量分散至叢集中的 Pod。\]](http://docs.aws.amazon.com/zh_tw/eks/latest/userguide/images/lbc-overview.png)


控制器會持續監控 Kubernetes Ingress 或 Service 資源。為了回應，它會建立適當的 AWS Elastic Load Balancing資源。您可透過在 Kubernetes 資源上套用註解，設定負載平衡器的特定行為。例如，您可以使用註釋將 AWS 安全群組連接至負載平衡器。

控制器會佈建以下資源：

 **Kubernetes `Ingress` **   
LBC 會在您建立 `Ingress` 時，建立 [AWS Application Load Balancer (ALB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html)。[請檢閱可套用至 Ingress 資源的註釋。](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/ingress/annotations/)

 **類型為 `LoadBalancer` 的 Kubernetes 服務**   
LBC 會在您建立類型 `LoadBalancer` 的 Kubernetes 服務時，建立 [AWS Network Load Balancer (NLB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html)。[請檢閱可套用至 Service 資源的註釋。](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/)  
在過去，Kubernetes Network Load Balancer 用於*執行個體*目標，但 LBC 用於 *IP* 目標。使用 AWS Load Balancer控制器版本 `2.3.0` 或更新版本，您可以使用任一目標類型建立 NLBs。如需 NLB 目標類型的詳細資訊，請參閱《Network Load Balancer 使用者指南》中的[目標類型](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-target-groups.html#target-type)。

此控制器是託管於 GitHub 上的 [開源專案](https://github.com/kubernetes-sigs/aws-load-balancer-controller)。

在部署控制器之前，我們建議您先檢閱[透過 Application Load Balancer 路由應用程式與 HTTP 流量](alb-ingress.md)與 [透過 Network Load Balancer 路由 TCP 與 UDP 流量](network-load-balancing.md) 中的先決條件和考量事項。在這些主題中，您將部署包含 AWS 負載平衡器的範例應用程式。

 **Kubernetes `Gateway` API**   
使用 AWS Load Balancer控制器版本 `2.14.0`或更新版本時，LBC 會在您建立 Kubernetes 時建立 [AWS Application Load Balancer (ALB)](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html)`Gateway`。Kubernetes Gateway 會將比輸入更多的組態標準化，這需要許多常見選項的自訂註釋。[檢閱您可以套用至閘道資源的組態。](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/gateway/gateway/)如需 `Gateway` API 的詳細資訊，請參閱 Kubernetes 文件中的[閘道 API](https://kubernetes.io/docs/concepts/services-networking/gateway/)。

## 安裝控制器
<a name="lbc-overview"></a>

您可以使用下列其中一個程序來安裝 AWS Load Balancer控制器：
+ 如果您是初次使用 Amazon EKS，我們建議您使用 Helm 進行安裝，因為它可簡化 AWS Load Balancer控制器安裝。如需詳細資訊，請參閱[搭配 Helm 的 Install AWS Load Balancer 控制器](lbc-helm.md)。
+ 若需進階設定，如對公有容器登錄庫的網路存取受限的叢集，請使用 Kubernetes 資訊清單。如需詳細資訊，請參閱[具有資訊清單的 Install AWS Load Balancer 控制器](lbc-manifest.md)。

## 從已淘汰的控制器版本移轉
<a name="lbc-deprecated"></a>
+ 如果您已安裝已棄用版本的 AWS Load Balancer控制器，請參閱 [從已棄用的 ALB 傳入控制器移轉應用程式](lbc-remove.md)。
+ 已棄用的版本無法升級。必須移除它們，並安裝目前版本的 AWS Load Balancer控制器。
+ 已棄用的版本包含：
  +  AWS 適用於 Kubernetes 的 ALB 傳入控制器 (「傳入控制器」)，是 AWS Load Balancer控制器的前身。
  + 任何`0.1.x `版本的 AWS Load Balancer控制器

## 舊版雲端供應商
<a name="lbc-legacy"></a>

Kubernetes 包含 AWS的舊版雲端供應商。舊版雲端提供者能夠佈建 AWS 負載平衡器，類似於 AWS Load Balancer控制器。舊版雲端供應商建立的是 Classic Load Balancer。如果您未安裝 AWS Load Balancer控制器，Kubernetes 會預設為使用舊版雲端提供者。您應該安裝 AWS Load Balancer控制器，並避免使用舊版雲端提供者。

**重要**  
在 2.5 版和更新版本中， AWS Load Balancer控制器會使用 成為 Kubernetes *服務*資源的預設控制器，`type: LoadBalancer`並為每個服務建立 AWS Network Load Balancer (NLB)。它透過為服務製作變異的 webhook 來做到這一點，此 webhook 會為 `type: LoadBalancer` 的新服務將 `spec.loadBalancerClass` 欄位設定至 `service.k8s.aws/nlb`。您可以關閉此功能並恢復為使用[舊式雲端供應商](https://kubernetes-sigs.github.io/aws-load-balancer-controller/latest/guide/service/annotations/#legacy-cloud-provider)作為預設控制器，方法是將 Helm Chart 值 `enableServiceMutatorWebhook` 設定為 `false`。除非您關閉此功能，否則叢集不會為您的服務佈建新的 Classic Load Balancer。現有的 Classic Load Balancer 會繼續運作。