使用服務注釋設定 Network Load Balancer - Amazon EKS

協助改進此頁面

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

使用服務注釋設定 Network Load Balancer

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

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

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

注意

EKS 自動模式需要子網路標籤來識別公有和私有子網路。

若您使用 eksctl 建立叢集,則您已具備這些標籤。

了解如何 標記 EKS 自動模式的子網路

範例服務

如需有關 Kubernetes Service 資源的詳細資訊,請參閱 Kubernetes 文件中

請檢閱下面的範例 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

常用註釋

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

提示

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

欄位 描述 範例

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 的 SSL 憑證 ARN,用於 HTTPS/TLS。

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 + IPv6)。

ipv4dualstack

考量事項

  • 您必須更新叢集 IAM 角色,以啟用從 Kubernetes 到 AWS 負載平衡器資源的標籤傳播。如需詳細資訊,請參閱 用於 EKS Auto 資源的自訂 AWS 標籤

  • 有關將資源與 EKS 自動模式或自我管理的 AWS 負載平衡器控制器關聯的資訊,請參閱 移轉參考

  • 有關修復負載平衡器問題的資訊,請參閱 EKS 自動模式疑難排解

  • 有關使用 EKS 自動模式負載平衡功能的更多考量,請參閱 負載平衡

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

服務註釋

先前的 新增 描述

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-attributes

service.beta.kubernetes.io/aws-load-balancer-proxy-protocol

不支援

改用 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

先前的 新增 描述

elbv2.k8s.aws/v1beta1

eks.amazonaws.com/v1

API 版本變更

spec.targetType 選用

spec.targetType 必要

明確的目標類型規格

spec.networking.ingress.from

不支援

不再支援沒有安全群組的 NLB