负载均衡器的 AWS EKS 服务 EXTERNAL-IP 处于待处理状态
Posted
技术标签:
【中文标题】负载均衡器的 AWS EKS 服务 EXTERNAL-IP 处于待处理状态【英文标题】:AWS EKS service EXTERNAL-IP of load balancer is Pending 【发布时间】:2021-12-31 09:09:16 【问题描述】:我正在为我的应用程序开发一个临时集群,它需要大约 12 个负载均衡器来定义我的服务。 12 个看起来都差不多:
apiVersion: v1
kind: Service
metadata:
labels:
app: my-app-api
name: my-app-api
namespace: default
annotations:
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: <some aws cert name>
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https"
spec:
externalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: http
port: 80
protocol: TCP
targetPort: 5001
- name: https
port: 443
protocol: TCP
targetPort: 5001
selector:
app: my-app-api
sessionAffinity: None
type: LoadBalancer
之后,我继续使用相同的设置创建生产集群。在我创建并部署 k8s 清单后:部署、服务,我无法使用 kubectl describe service
命令获取 LoadBalancer Ingress。我注意到以下图片:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
<some-name> LoadBalancer <some_ip> ****.us-west-1.elb.amazonaws.com 80:30339/TCP,443:32754/TCP 1m
<some-name> LoadBalancer <some_ip> ****.us-west-1.elb.amazonaws.com 80:31538/TCP,443:32061/TCP 1m
<some-name> LoadBalancer <some_ip> ****.us-west-1.elb.amazonaws.com 80:30976/TCP,443:31323/TCP 1m
<some-name> LoadBalancer <some_ip> ****.us-west-1.elb.amazonaws.com 80:30288/TCP,443:32073/TCP 1m
<some-name> LoadBalancer <some_ip> ****.us-west-1.elb.amazonaws.com 80:32270/TCP,443:31159/TCP 1m
<some-name> LoadBalancer <some_ip> ****.us-west-1.elb.amazonaws.com 80:31966/TCP,443:30944/TCP 1m
kubernetes ClusterIP <some_ip> <none> 443/TCP 1m
<some-name> LoadBalancer <some_ip> PENDING 80:31901/TCP,443:30444/TCP 1m
<some-name> LoadBalancer <some_ip> PENDING 80:31510/TCP,443:30393/TCP 1m
<some-name> LoadBalancer <some_ip> PENDING 80:32613/TCP,443:32616/TCP 1m
<some-name> LoadBalancer <some_ip> PENDING 80:32069/TCP,443:30320/TCP 1m
<some-name> LoadBalancer <some_ip> PENDING 80:31667/TCP,443:32194/TCP 1m
<some-name> LoadBalancer <some_ip> PENDING 80:31943/TCP,443:32081/TCP 1m
【问题讨论】:
【参考方案1】:在对上述行为的原因进行排查后,我对 LoadBalancers(LB) 得出以下结论:
service.beta.kubernetes.io/aws-load-balancer-ssl-cert
直接依赖AWS负载均衡,如果在创建LB的地域没有签名证书,LB不会加入k8s集群。
我的问题是因为 k8s 集群无法为新创建的服务自动配置 AWS LB,因为 AWS 账户中单个区域的 默认 LB 限制为 20
我向 AWS 请求增加配额 LB 限制,但由于需要更多时间,我将生产集群移至不同的 AWS 区域。 之后,LBs 按预期创建,我可以得到我的入口。
【讨论】:
以上是关于负载均衡器的 AWS EKS 服务 EXTERNAL-IP 处于待处理状态的主要内容,如果未能解决你的问题,请参考以下文章
负载均衡器的 AWS EKS 服务 EXTERNAL-IP 处于待处理状态
带有 ALB 入口控制器的 Terraform AWS Kubernetes EKS 资源不会创建负载均衡器
AWS eks绑定alb 使用aws-load-balancer-controller(Ingress Controller)提供服务
AWS eks绑定alb 使用aws-load-balancer-controller(Ingress Controller)提供服务