EKS 节点未使用 ALB 入口控制器在目标组中注册

jaw*_*846 4 amazon-web-services kubernetes-ingress amazon-eks aws-application-load-balancer

我已按照以下 AWS 文档创建了 ALB 入口控制器;

https://aws.amazon.com/premiumsupport/knowledge-center/eks-alb-ingress-controller-setup/

EKS:版本:1.19

所有服务均已成功创建,没有错误。

但不幸的是,这些节点没有注册到 ALB 的目标组中。

我还尝试了不同版本的 alb 入口控制器,但发现了同样的问题。

使用示例应用程序;

kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.1.3/docs/examples/2048/2048_full.yaml
Run Code Online (Sandbox Code Playgroud)

输出如下;

入口 -->

[centos@ip-10-1-68-249 alb-controller]$ kubectl get ing -n game-2048 -o wide
Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
NAME           CLASS    HOSTS   ADDRESS                                                                   PORTS   AGE
ingress-2048   <none>   *       k8s-game2048-ingress2-253e697ad8-1355143956.us-east-1.elb.amazonaws.com   80      81s
Run Code Online (Sandbox Code Playgroud)

目标组绑定 -->

[centos@ip-10-1-68-249 alb-controller]$ kubectl get TargetGroupBinding -n game-2048 -o wide
NAME                               SERVICE-NAME   SERVICE-PORT   TARGET-TYPE   ARN                                                                                                                 AGE
k8s-game2048-service2-3c0ccb9f36   service-2048   80             ip            arn:aws:elasticloadbalancing:us-east-1:xxxxxxxxxxxx:targetgroup/k8s-game2048-service2-3c0ccb9f36/faa10866343a792f   3m30s
Run Code Online (Sandbox Code Playgroud)

但该实例未附加到目标组;

在此输入图像描述

这里有人可以支持吗

tru*_*512 6

我遇到了完全相同的问题,只是更新的集群版本(1.22)。问题出在受管节点的安全组配置上。

aws-load-balancer-controller在浏览Pod日志时,第一个出现问题的迹象就显而易见了

我注意到一个错误:

{"...","error":"expect exactly one securityGroup tagged with kubernetes.io/cluster/... for eni eni-0d46id..., got: [sg-081baacc1d925f936 sg-0a11d768e92737297]"}
Run Code Online (Sandbox Code Playgroud)

这让我开始关注安全组配置。我注意到我将主集群组以及它们的正常节点到节点组直接附加到节点,这是多余的。

由于我用于terraform部署和官方aws-eks模块[1],因此我只需从节点组配置中删除此参数:

attach_cluster_primary_security_group = true
Run Code Online (Sandbox Code Playgroud)

部署后,重新启动入口控制器后,它会自动获取服务并创建必要的资源。

[1] https://github.com/terraform-aws-modules/terraform-aws-eks