

 **協助改進此頁面** 

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

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

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

# 使用服務注釋設定 Network Load Balancer
<a name="auto-configure-nlb"></a>

了解如何使用 Kubernetes 服務註釋，在 Amazon EKS 中設定 Network Load Balancer (NLB)。本主題解釋了 EKS 自動模式支援用於自訂 NLB 行為的註釋，包括網際網路可存取性、運作狀態檢查、SSL/TLS 終止及 IP 目標模式。

當您在 EKS Auto Mode `LoadBalancer`中建立 類型的 Kubernetes 服務時，EKS 會根據您指定的註釋自動佈建和設定 AWS Network Load Balancer。這種宣告式方法允許您直接透過 Kubernetes 資訊清單來管理負載平衡器組態，維持基礎結構即程式碼的實踐。

EKS 自動模式預設為處理所有 LoadBalancer 類型服務的 Network Load Balancer 佈建 - 無需安裝或設定額外的控制器。`loadBalancerClass: eks.amazonaws.com/nlb` 規格被自動設定為叢集預設值，簡化了部署程序，同時保持了與現有 Kubernetes 工作負載的相容性。

**注意**  
EKS 自動模式需要子網路標籤來識別公有和私有子網路。  
若您使用 `eksctl` 建立叢集，則您已具備這些標籤。  
了解如何 [標記 EKS 自動模式的子網路](tag-subnets-auto.md)。

## 範例服務
<a name="_sample_service"></a>

如需有關 Kubernetes `Service` 資源的詳細資訊，請參閱 [Kubernetes 文件中](https://kubernetes.io/docs/concepts/services-networking/service/)。

請檢閱下面的範例 `Service` 資源：

```
apiVersion: v1
kind: Service
metadata:
  name: echoserver
  annotations:
    # Specify the load balancer scheme as internet-facing to create a public-facing Network Load Balancer (NLB)
    service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
spec:
  selector:
    app: echoserver
  ports:
    - port: 80
      targetPort: 8080
      protocol: TCP
  type: LoadBalancer
  # Specify the new load balancer class for NLB as part of EKS Auto Mode feature
  # For clusters with Auto Mode enabled, this field can be omitted as it's the default
  loadBalancerClass: eks.amazonaws.com/nlb
```

## 常用註釋
<a name="_commonly_used_annotations"></a>

下表列出 EKS 自動模式支援的常用註釋。請注意，EKS 自動模式可能不支援所有註釋。

**提示**  
下列所有註釋都需要加上字首 `service.beta.kubernetes.io/` 


| 欄位 | Description | 範例 | 
| --- | --- | --- | 
|   `aws-load-balancer-type`   |  指定負載平衡器類型。將 `external` 用於新的部署。  |   `external`   | 
|   `aws-load-balancer-nlb-target-type`   |  指定是將流量路由到節點執行個體，還是直接路由到 Pod IP。將 `instance` 用於標準部署，或將 `ip` 用於直接 Pod 路由。  |   `instance`   | 
|   `aws-load-balancer-scheme`   |  控制負載平衡器是內部或是面向網際網路。  |   `internet-facing`   | 
|   `aws-load-balancer-healthcheck-protocol`   |  目標群組的運作狀態檢查通訊協定。常見選項是 `TCP` (預設) 或 `HTTP`。  |   `HTTP`   | 
|   `aws-load-balancer-healthcheck-path`   |  使用 HTTP/HTTPS 通訊協定時，用於運作狀態檢查的 HTTP 路徑。  |   `/healthz`   | 
|   `aws-load-balancer-healthcheck-port`   |  用於運作狀態檢查的連接埠。可以是特定連接埠號碼或 `traffic-port`。  |   `traffic-port`   | 
|   `aws-load-balancer-subnets`   |  指定要在哪些子網路中建立負載平衡器。可使用子網路 ID 或名稱。  |   `subnet-xxxx, subnet-yyyy`   | 
|   `aws-load-balancer-ssl-cert`   |  來自 AWS Certificate Manager for HTTPS/TLS 的 SSL 憑證 ARN。  |   ` arn:aws: acm:region:account:certificate/cert-id`   | 
|   `aws-load-balancer-ssl-ports`   |  指定哪些連接埠應使用 SSL/TLS。  |   `443, 8443`   | 
|   `load-balancer-source-ranges`   |  允許存取負載平衡器的 CIDR 範圍。  |   `10.0.0.0/24, 192.168.1.0/24`   | 
|   `aws-load-balancer-additional-resource-tags`   |  要套用至負載平衡器和相關資源的其他 AWS 標籤。  |   `Environment=prod,Team=platform`   | 
|   `aws-load-balancer-ip-address-type`   |  指定負載平衡器是使用 IPv4，還是雙堆疊 (IPv4 \$1 IPv6)。  |   `ipv4` 或 `dualstack`   | 

## 考量事項
<a name="_considerations"></a>
+ 您必須更新叢集 IAM 角色，才能啟用從 Kubernetes 到 AWS Load Balancer資源的標籤傳播。如需詳細資訊，請參閱[EKS Auto 資源的自訂 AWS 標籤](auto-cluster-iam-role.md#tag-prop)。
+ 如需將資源與 EKS Auto Mode 或 self-managed AWS Load Balancer Controller 建立關聯的資訊，請參閱 [移轉參考](migrate-auto.md#migration-reference)。
+ 有關修復負載平衡器問題的資訊，請參閱 [EKS 自動模式疑難排解](auto-troubleshoot.md)。
+ 有關使用 EKS 自動模式負載平衡功能的更多考量，請參閱 [Load balancing](auto-networking.md#auto-lb-consider)。

當移轉至 EKS 自動模式進行負載平衡時，服務註釋與資源組態中需要進行多項變更。以下表格概述了先前與新實作之間的關鍵差異，包括不支援的選項和推薦的替代方案。

### 服務註釋
<a name="_service_annotations"></a>


| 先前的 | 新增 | Description | 
| --- | --- | --- | 
|   `service.beta.kubernetes.io/load-balancer-source-ranges`   |  不支援  |  在服務上使用 `spec.loadBalancerSourceRanges`  | 
|   `service.beta.kubernetes.io/aws-load-balancer-type`   |  不支援  |  在服務上使用 `spec.loadBalancerClass`  | 
|   `service.beta.kubernetes.io/aws-load-balancer-internal`   |  不支援  |  使用 `service.beta.kubernetes.io/aws-load-balancer-scheme`   | 
|   `service.beta.kubernetes.io/aws-load-balancer-proxy-protocol`   |  不支援  |  改用 `service.beta.kubernetes.io/aws-load-balancer-target-group-attributes`  | 
|  各種負載平衡器屬性  |  不支援  |  使用 `service.beta.kubernetes.io/aws-load-balancer-attributes`   | 
|   `service.beta.kubernetes.io/aws-load-balancer-access-log-enabled`   |  不支援  |  改用 `service.beta.kubernetes.io/aws-load-balancer-attributes`  | 
|   `service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-name`   |  不支援  |  改用 `service.beta.kubernetes.io/aws-load-balancer-attributes`  | 
|   `service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-prefix`   |  不支援  |  改用 `service.beta.kubernetes.io/aws-load-balancer-attributes`  | 
|   `service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled`   |  不支援  |  改用 `service.beta.kubernetes.io/aws-load-balancer-attributes`  | 

要從已棄用的負載平衡器屬性註釋移轉，請將這些設定合併至 `service.beta.kubernetes.io/aws-load-balancer-attributes` 註釋中。此註釋接受逗號分隔的鍵值對清單，用於各種負載平衡器屬性。例如，若要指定存取記錄和跨區域負載平衡，請使用下列格式：

```
service.beta.kubernetes.io/aws-load-balancer-attributes: access_logs.s3.enabled=true,access_logs.s3.bucket=my-bucket,access_logs.s3.prefix=my-prefix,load_balancing.cross_zone.enabled=true
```

這種合併格式提供了一種更一致、更靈活的方式來設定負載平衡器屬性，同時減少了所需單獨注釋的數量。請檢閱您現有的服務組態，並將其更新為使用此合併格式。

### TargetGroupBinding
<a name="_targetgroupbinding"></a>


| 先前的 | 新增 | Description | 
| --- | --- | --- | 
|   `elbv2.k8s.aws/v1beta1`   |   `eks.amazonaws.com/v1`   |  API 版本變更  | 
|   `spec.targetType` 選用  |   `spec.targetType` 必要  |  明確的目標類型規格  | 
|   `spec.networking.ingress.from`   |  不支援  |  不再支援沒有安全群組的 NLB  | 

注意：若要使用自訂 TargetGroupBinding 功能，您必須使用叢集名稱的`eks:eks-cluster-name`標籤來標記目標群組，以授予控制器必要的 IAM 許可。請注意，刪除 TargetGroupBinding 資源或叢集時，控制器會刪除目標群組。