2

在入口控制器中使用 AWS ALB 部署超过 3 个应用程序时,我偶然发现了这个奇怪的限制。

最多 3 个应用程序,没有问题,当配置第 4 个入口时,它没有获得端点:

第 4 个入口没有得到端点

但是 LoadBalancer (ALB) 是按预期配置的:

预置负载均衡器

我不知道有 3 个 Ingress 的限制吗?还是我在配置中的某个地方设置了这个限制?

“失败”入口的输出kubectl describe ingress(注意丢失的地址 - 其他 3 个入口都有地址):

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: ["/*"]  }]
4

1 回答 1

3

发现了问题,显然每个集群节点 ENI(弹性网络接口)的安全组限制为 5,并且每个具有 ALB Ingress 的新应用程序实例都会添加一个 SG。这是一个服务配额,可以增加:

服务配额

相关日志是通过以下方式找到的:

kubectl logs -n kube-system   deployment.apps/alb-ingress-controller

我已经有 2 个用于 ENI 的 SG,因此在部署了 3 个应用程序实例后,就达到了限制。我刚刚将限制增加到 15(每个服务配额请求),瞧,我可以使用 ALB 入口部署更多应用程序实例。

对我来说,这解决了这个问题,但这个解决方案不会无限扩展,因为每个应用程序实例都会向 ENI 添加一个新的安全组,所以 13 个应用程序实例对我来说是新的限制。

于 2020-02-29T10:08:14.653 回答