OpenShift 4.11中AWS LoadBalancer Controller配置NLB IP目标类型异常
问题解决:OpenShift 4.11中AWS NLB IP模式目标组无目标,控制器无法解析Pod ENI
核心问题
AWS Load Balancer Controller无法获取Pod对应的AWS ENI信息,导致无法将Pod注册到NLB的目标组,根源通常是网络配置、权限不足或CNI插件不兼容。
排查与解决步骤
1. 确认CNI插件兼容性
OpenShift 4.11默认使用OVN-Kubernetes Overlay网络,Pod IP为集群内部私有IP,不属于AWS VPC子网范围,也没有关联AWS ENI,因此无法支持NLB的ip目标类型。
- 若要使用NLB IP模式,需切换至AWS VPC CNI插件:
- 执行命令检查当前CNI插件:
oc get network.config.openshift.io cluster -o jsonpath='{.status.networkType}' - 切换为AWS VPC CNI:编辑集群网络配置,将
spec.networkType设置为AmazonVPC,等待集群重新配置完成。
- 执行命令检查当前CNI插件:
2. 验证控制器IAM权限
AWS Load Balancer Controller需要足够的AWS API权限来查询Pod的ENI信息:
- 确认控制器对应的ServiceAccount(通常是
aws-load-balancer-controller所在命名空间的SA)已绑定包含以下权限的IAM角色:ec2:DescribeNetworkInterfacesec2:DescribeInstancesec2:DescribeSubnets
- 若通过Operator安装,检查Operator是否正确配置了IRSA(IAM Roles for Service Accounts)绑定,确保权限生效。
3. 检查节点与Pod状态
- 确认报错的Pod(
titan/titan-stream-connect-runner-backup-596bdd6cc5-ngnds)处于Running状态,网络正常:oc describe pod titan-stream-connect-runner-backup-596bdd6cc5-ngnds -n titan - 检查Pod所在节点的实例角色是否具备
ec2:DescribeNetworkInterfaces权限,节点需能被控制器查询到ENI信息。
4. 检查TargetGroupBinding配置
- 查看TargetGroupBinding资源的详细配置,确认参数正确:
oc get targetgroupbindings elbv2.k8s.aws/k8s-titan-titan-999b29c596 -n titanlive -o yaml - 确认
spec.targetType为ip,spec.serviceRef指向正确的Service,spec.targetGroupARN与AWS控制台中的目标组ARN一致。
5. 查看控制器日志进一步定位
- 查看AWS Load Balancer Controller的日志,获取更详细的错误上下文:
oc logs -n <控制器命名空间> deployment/aws-load-balancer-controller -f - 若日志显示权限相关错误,需补充对应的IAM权限;若显示ENI未找到,需确认CNI插件是否正确分配了ENI给Pod。
内容的提问来源于stack exchange,提问作者MOUSSAOUI Abdelmajid
相关产品推荐
相关产品推荐

