kubernetes 未为ALB创建目标组绑定

uplii1fm  于 2023-05-16  发布在  Kubernetes
关注(0)|答案(2)|浏览(260)

虽然这个问题一开始看起来可能是重复的,但我会要求人们过一遍。我已经检查过了,在发布这个之前,所有类似的问题。
我有一个ALB入口控制器,它有一个注册的目标组,我试图通过ALB访问的应用程序。但是,由于目标组下的“已注册目标”始终为0,因此不会为应用程序创建目标组绑定。此外,LoadBalancerAssociated也显示为None。这可以从下面的图片中看出。
我已经检查了ALB pod日志,创建targetgroupbinding时没有错误。
基于这里的一些文档:
https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.1/guide/targetgroupbinding/targetgroupbinding/
我看到ALB应该自己创建targetgroupbinding:
The AWS LoadBalancer controller internally used TargetGroupBinding to support the functionality for Ingress and Service resource as well. It automatically creates TargetGroupBinding in the same namespace of the Service used.
由于pod日志中没有错误,我想知道如何调试此问题?


任何帮助将不胜感激。
更新1(当前场景):ALB应该对多个应用程序进行负载平衡。所以入口下有很多服务。除了上面提到的服务之外,已经为所有服务创建了targetgroupbindings。

bwitn5fc

bwitn5fc1#

我似乎已经找到了解决这个问题的办法。
如问题中所述,ALB入口控制器位于许多服务的前面。
让我们将它们命名为服务A和服务B,服务B是存在目标组绑定问题的服务。
对于服务A,ALB日志中有以下错误:

{"level":"info","ts":xxx.xx,"logger":"controllers.ingress","msg":"creating targetGroup","stackID":"xxxx","resourceID":"A"}
{"level":"error","ts":xxxxxx.xxx,"logger":"controller-runtime.manager.controller.ingress","msg":"Reconciler error","name":"xxxxx","namespace":"xxxx","error":"InvalidParameter: 1 validation error(s) found.\n- minimum field value of 1, CreateTargetGroupInput.Port.\n"}

错误提示ALB控制器无法为服务A创建目标组。
但是我忽略了这个错误,因为它似乎与服务B无关。
但是,令我非常惊讶的是,和解者的这个错误似乎阻碍了与其他目标群体的和解。
在通过从ALB Ingress yaml中删除服务A来修复上述错误后,这意味着ALB不会为服务A创建目标组。
这导致服务B的对账最终被触发:

{"level":"info","ts":xxxx.xxx,"logger":"controllers.ingress","msg":"modifying targetGroupBinding","stackID":"xxx/xxxxx","resourceID":"xx/xxxx","targetGroupBinding":{"namespace":"xxxx","name":"xxxxxxx"}}
{"level":"info","ts":xxxx.xxxxxxx,"logger":"controllers.ingress","msg":"modified targetGroupBinding","stackID":"xxx/xxxxxx","resourceID":"xxx/xxxxxx","targetGroupBinding":{"namespace":"xxxx","name":"xxxxxxx"}}

最后,我们用正确的负载均衡器和目标标记了服务B的目标组。

  • 最可能的结论:*
    协调器错误会阻止所有其他协调。因此,如果您看到ALB的目标组绑定不存在,尽管具有正确的入口配置和RBAC(目标组绑定CR上的更新权限),请检查ALB pod日志中的协调器错误。
enyaitl3

enyaitl32#

我能够通过添加下面的注解来解决这个问题

"alb.ingress.kubernetes.io/target-type": ip

参考-1695

相关问题