如何解决Kubernetes中AWS NLB处于Pending状态的问题
解决Kubernetes中AWS NLB始终处于Pending状态的问题
检查子网配置
AWS NLB要求至少部署在两个不同可用区的公有子网中,你当前只指定了一个子网,这会导致资源创建失败。修改service.beta.kubernetes.io/aws-load-balancer-subnets注解,添加多个跨可用区的公有子网,用逗号分隔:service.beta.kubernetes.io/aws-load-balancer-subnets: subnet-xxxxxx,subnet-yyyyyy同时确认这些子网已开启自动分配公有IP功能。
验证IAM权限
集群控制节点(或cloud-controller-manager组件)需要具备创建NLB相关资源的IAM权限,检查对应角色是否包含以下权限:elasticloadbalancing:CreateLoadBalancerelasticloadbalancing:CreateTargetGroupelasticloadbalancing:RegisterTargetsec2:DescribeSubnetsec2:DescribeSecurityGroups
缺失权限的话,补充对应的IAM策略即可。
核对标签匹配
确认Service的spec.selector中app: <pod label>与实际运行Pod的标签完全一致,标签不匹配会导致NLB无法关联目标Pod,进而卡在Pending状态。修正注解参数
部分Kubernetes版本中,aws-load-balancer-type的正确值应为nlb而非external,修改注解:service.beta.kubernetes.io/aws-load-balancer-type: nlb若使用EKS较新版本,可尝试使用正式版注解前缀:
service.kubernetes.io/aws-load-balancer-type。查看事件日志定位问题
执行命令查看Service的事件详情,获取具体错误原因:kubectl describe service <service name>日志会明确提示比如子网不可用、权限不足等导致Pending的具体问题。
内容的提问来源于stack exchange,提问作者floormind
相关产品推荐
相关产品推荐

