如何在Amazon EKS上无需手动配置部署IPv6 Kubernetes LoadBalancer服务
解决IPv6 EKS环境中自动创建双栈NLB的问题
以下是针对问题的排查和解决步骤:
1. 确认AWS Load Balancer Controller版本
确保使用的AWS Load Balancer Controller版本在v2.1.0及以上,只有该版本及后续版本支持为NLB配置dualstack IP地址类型,版本过低会导致注解不生效,升级到最新稳定版即可。
2. 清理重复注解
你的Service配置中存在两个功能完全重复的注解:
service.beta.kubernetes.io/aws-load-balancer-internal: "true"service.beta.kubernetes.io/aws-load-balancer-scheme: "internal"
重复配置可能导致控制器解析异常,保留其中一个即可。修改后的注解示例:
metadata: annotations: service.beta.kubernetes.io/aws-load-balancer-scheme: "internal" service.beta.kubernetes.io/aws-load-balancer-type: "nlb" service.beta.kubernetes.io/aws-load-balancer-ip-address-type: "dualstack"
3. 验证双栈子网标签配置
双栈VPC中的子网必须正确打标签,让控制器能识别并选择:
- 内部NLB对应的子网需添加标签:
kubernetes.io/role/internal-elb: 1 - 确保这些子网已分配IPv6 CIDR块,且EKS集群节点部署在这些双栈子网内
4. 手动指定双栈子网(可选)
如果控制器自动选子网出现问题,可通过注解手动指定双栈子网ID,确保只选择支持IPv6的子网:
service.beta.kubernetes.io/aws-load-balancer-subnets: "subnet-xxxxxx,subnet-yyyyyy"
将上述值替换为你的双栈子网实际ID。
5. 确认EKS集群IPv6配置
确保集群为IPv6模式部署:
- 集群网络配置为IPv6(或双栈)
- 节点和Pod均分配了IPv6地址
- kube-proxy配置支持IPv6
完成以上步骤后重新部署Service,控制器会自动创建双栈(IPv4+IPv6)内部NLB,无需手动修改。
内容的提问来源于stack exchange,提问作者Hamed Amini
相关产品推荐
相关产品推荐

