EKS Ingress(用于 ALB)在部署超过 3 个 Ingress 时没有端点
EKS Ingress (for ALB) gets no endpoint when deploying more than 3 Ingresses
我在入口控制器中使用 AWS ALB 部署 3 个以上的应用程序时偶然发现了这个奇怪的限制。
最多 3 个应用程序,没有问题,当配置第 4 个入口时,它没有获得端点:
然而,负载均衡器 (ALB) 已按预期配置:
是否有我不知道的 3 个 Ingress 的限制?还是我在配置的某处设置了这个限制?
"failing" ingress 的 kubectl describe ingress
的输出(注意丢失的地址 - 其他 3 个 ingresses 都有地址):
Name: some-ingress
Namespace: default
Address:
Default backend: default-http-backend:80 (<none>)
Rules:
Host Path Backends
---- ---- --------
*
/ ssl-redirect-default:use-annotation (<none>)
/* ssl-redirect:use-annotation (<none>)
/* some-service:80 (192.168.92.252:8080)
Annotations:
alb.ingress.kubernetes.io/actions.ssl-redirect: {"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}
alb.ingress.kubernetes.io/actions.ssl-redirect-default: {"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Path": "/someapp/#{path}", "Port": "443", "StatusCode": "HTTP_301"}}
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:eu-central-1:...
alb.ingress.kubernetes.io/listen-ports: [{"HTTP": 80}, {"HTTPS":443}]
alb.ingress.kubernetes.io/scheme: internet-facing
kubernetes.io/ingress.class: alb
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal CREATE 16m alb-ingress-controller LoadBalancer some-alb created, ARN: some-alb-arn:loadbalancer/app/some-alb/some-ids
Normal CREATE 16m (x2 over 16m) alb-ingress-controller rule 1 created with conditions [{ Field: "path-pattern", Values: ["/"] }]
Normal CREATE 16m (x2 over 16m) alb-ingress-controller rule 2 created with conditions [{ Field: "path-pattern", Values: ["/*"] }]
Normal CREATE 16m alb-ingress-controller rule 3 created with conditions [{ Field: "path-pattern", Values: ["/*"] }]
发现问题,apparently there is a Security Group Limit of 5 per Cluster Node ENI (Elastic Network Interface), and every new application instance with ALB Ingress adds a SG。这是一个服务配额,可以增加:
相关日志是通过以下途径找到的:
kubectl logs -n kube-system deployment.apps/alb-ingress-controller
我已经有 2 个用于 ENI 的 SG,所以在部署了 3 个应用程序实例后,就达到了限制。我刚刚将限制增加到 15(每个服务配额请求),瞧,我可以使用 ALB Ingresses 部署更多应用程序实例。
对我来说,这解决了这个问题,但是这个解决方案不会无限扩展,因为每个应用程序实例都会向 ENI 添加一个新的安全组,所以 13 个应用程序实例是我的新限制。
我在入口控制器中使用 AWS ALB 部署 3 个以上的应用程序时偶然发现了这个奇怪的限制。
最多 3 个应用程序,没有问题,当配置第 4 个入口时,它没有获得端点:
然而,负载均衡器 (ALB) 已按预期配置:
是否有我不知道的 3 个 Ingress 的限制?还是我在配置的某处设置了这个限制?
"failing" ingress 的 kubectl describe ingress
的输出(注意丢失的地址 - 其他 3 个 ingresses 都有地址):
Name: some-ingress
Namespace: default
Address:
Default backend: default-http-backend:80 (<none>)
Rules:
Host Path Backends
---- ---- --------
*
/ ssl-redirect-default:use-annotation (<none>)
/* ssl-redirect:use-annotation (<none>)
/* some-service:80 (192.168.92.252:8080)
Annotations:
alb.ingress.kubernetes.io/actions.ssl-redirect: {"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}
alb.ingress.kubernetes.io/actions.ssl-redirect-default: {"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Path": "/someapp/#{path}", "Port": "443", "StatusCode": "HTTP_301"}}
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:eu-central-1:...
alb.ingress.kubernetes.io/listen-ports: [{"HTTP": 80}, {"HTTPS":443}]
alb.ingress.kubernetes.io/scheme: internet-facing
kubernetes.io/ingress.class: alb
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal CREATE 16m alb-ingress-controller LoadBalancer some-alb created, ARN: some-alb-arn:loadbalancer/app/some-alb/some-ids
Normal CREATE 16m (x2 over 16m) alb-ingress-controller rule 1 created with conditions [{ Field: "path-pattern", Values: ["/"] }]
Normal CREATE 16m (x2 over 16m) alb-ingress-controller rule 2 created with conditions [{ Field: "path-pattern", Values: ["/*"] }]
Normal CREATE 16m alb-ingress-controller rule 3 created with conditions [{ Field: "path-pattern", Values: ["/*"] }]
发现问题,apparently there is a Security Group Limit of 5 per Cluster Node ENI (Elastic Network Interface), and every new application instance with ALB Ingress adds a SG。这是一个服务配额,可以增加:
相关日志是通过以下途径找到的:
kubectl logs -n kube-system deployment.apps/alb-ingress-controller
我已经有 2 个用于 ENI 的 SG,所以在部署了 3 个应用程序实例后,就达到了限制。我刚刚将限制增加到 15(每个服务配额请求),瞧,我可以使用 ALB Ingresses 部署更多应用程序实例。
对我来说,这解决了这个问题,但是这个解决方案不会无限扩展,因为每个应用程序实例都会向 ENI 添加一个新的安全组,所以 13 个应用程序实例是我的新限制。