帮助改进此页面
要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。
了解如何使用 Kubernetes 服务注释在 Amazon EKS 中配置网络负载均衡器(NLB)。本主题介绍 EKS 自动模式支持的用于自定义 NLB 行为的注释,包括互联网可访问性、运行状况检查、SSL/TLS 终止和 IP 目标模式。
在 EKS 自动模式下创建类型为 LoadBalancer
的 Kubernetes 服务时,EKS 会根据您指定的注释自动预置和配置 AWS 网络负载均衡器。借助这种声明式方法,您可以直接通过 Kubernetes 清单来管理负载均衡器配置,确保遵循基础设施即代码实践。
对于所有 LoadBalancer 类型的服务,EKS 自动模式会默认处理网络负载均衡器预置,无需额外的控制器安装或配置。loadBalancerClass: eks.amazonaws.com/nlb
规范会自动设置为集群的默认值,这不仅简化了部署过程,同时也保持了与现有 Kubernetes 工作负载的兼容性。
注意
示例服务
有关 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/
字段 | 描述 | 示例 |
---|---|---|
|
指定负载均衡器类型。新部署请使用 |
|
|
指定是将流量路由到节点实例还是直接路由到容器组 IP。标准部署请使用 |
|
|
指定负载均衡器是面向内部还是互联网。 |
|
|
目标组的运行状况检查协议。常用选项是 |
|
|
使用 HTTP/HTTPS 协议时进行运行状况检查的 HTTP 路径。 |
|
|
用于运行状况检查的端口。可以是特定的端口号,也可以是 |
|
|
指定要在其中创建负载均衡器的子网。可以使用子网 ID 或名称。 |
|
|
来自 AWS Certication Manager 的适用于 HTTPS/TLS 的 SSL 证书 ARN。 |
|
|
指定应使用 SSL/TLS 的端口。 |
|
|
被允许访问该负载均衡器的 CIDR 范围。 |
|
|
要应用于负载均衡器和相关资源的其他 AWS 标签。 |
|
|
指定负载均衡器是使用 IPv4 还是双栈(IPv4 + IPv6)地址。 |
|
注意事项
-
您必须更新集群 IAM 角色才能支持将标签从 Kubernetes 传播到 AWS 负载均衡器资源。有关更多信息,请参阅 EKS 自动模式资源的自定义 AWS 标签。
-
有关将资源关联到 EKS 自动模式或自主管理型 AWS 负载均衡器控制器的信息,请参阅迁移参考。
-
有关修复负载均衡器问题的信息,请参阅 EKS 自动模式故障排除。
-
有关使用 EKS 自动模式的负载均衡功能时的其他注意事项,请参阅负载均衡。
将负载均衡模式迁移到 EKS 自动模式进时,需要对服务注释和资源配置进行一些更改。下表总结了旧版和新版实现之间的主要区别,包括不支持的选项和建议的替代方案。
服务注释
旧版 | New | 描述 |
---|---|---|
|
不支持 |
在服务上使用 |
|
不支持 |
在服务上使用 |
|
不支持 |
使用 |
各种负载均衡器属性 |
不支持 |
使用 |
|
不支持 |
请改用 |
|
不支持 |
请改用 |
|
不支持 |
请改用 |
|
不支持 |
请改用 |
|
不支持 |
请改用 |
要迁移已弃用的负载均衡器属性注释,请将这些设置合并到 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
service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: |
proxy_protocol_v2.enabled=true
这种合并后的格式让您可以更加一致、灵活地配置负载均衡器属性,同时减少所需的单独注释数量。检查您现有的服务配置并进行更新以使用此合并后的格式。
TargetGroupBinding
旧版 | New | 描述 |
---|---|---|
|
|
API 版本更改 |
|
|
显式目标类型规范 |
|
不支持 |
不再支持没有安全组的 NLB |