用EKS alb入口健康检查管理的ALB前面的AWS Global Accelerator失败

时间:2020-01-31 13:28:22

标签: amazon-web-services amazon-route53 amazon-eks aws-eks

获得了一个带有alb入口控制器和连接到route53的外部DNS的EKS集群,现在一些客户端希望使用静态IP或IP范围来连接到我们的服务器并将这些IP列入其防火墙白名单。

尝试了新的AWS Global Accelerator,然后按照本教程https://docs.aws.amazon.com/global-accelerator/latest/dg/getting-started.html进行操作,但失败了:

Listeners in this accelerator have an unhealthy status. To make sure that Global Accelerator can run health checks successfully, ensure that a service is responding on the protocol and port that you specified in the health check configuration. Learn more

经进一步了解,运行状况检查将与ALB上配置的相同,也可能由于route53运行状况检查ip未列入白名单而所有入站流量都在端口80和443中打开,因此可能会失败如何对此进行进一步调试,或者是否还有其他解决方案可获取ALB的IP范围或静态IP。

2 个答案:

答案 0 :(得分:0)

您需要向入口控制器添加这样的运行状况检查规则:

- http:
    paths:
      - path: /global-accelerator-healthcheck
        backend:
          serviceName: global-accelerator-healthcheck
          servicePort: use-annotation

然后添加注释:

    alb.ingress.kubernetes.io/actions.global-accelerator-healthcheck: '{"Type": "fixed-response", "FixedResponseConfig": {"ContentType": "text/plain", "StatusCode": "200", "MessageBody": "healthy" }}'

然后将全局加速器配置为对该端点的运行状况检查

答案 1 :(得分:0)

说到 AWS ALB Ingress 控制器,总是尽量想到 当您使用 AWS ALB 及其目标组时。

  • 您甚至可以通过登录 AWS 控制台 UI 来识别 ALB 及其目标组。
  • 要回答您的问题,请尝试将以下详细信息添加到您的入口中,

代码:

annotations:
alb.ingress.kubernetes.io/healthcheck-protocol: HTTP
alb.ingress.kubernetes.io/healthcheck-port: "8161"
alb.ingress.kubernetes.io/healthcheck-path: /admin
alb.ingress.kubernetes.io/success-codes: '401'
alb.ingress.kubernetes.io/backend-protocol: HTTP`

注意:如果您对不同的服务有不同的健康检查设置,请从 K8s“Ingress”中删除此块,并为每个 K8s“服务”添加块。

如果需要更多信息,请参阅:https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.1/guide/ingress/annotations/