调用WebHook“vingress.elbv2.k8s.aws”失败

qhhrdooz  于 2022-09-20  发布在  Kubernetes
关注(0)|答案(5)|浏览(146)

我在新的EKS集群(v1.21.5-ek-bc4871b)上安装了AWS-Load-Balancer-控制器。

我按本指南一步一步地安装了https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.3/deploy/installation/,但当我尝试部署入口对象时,我收到了标题中提到的错误。我试着在GitHub发出类似https://github.com/kubernetes-sigs/aws-load-balancer-controller/issues/2039的问题时这样做,但没有找到任何答案。

我还能做些什么来检查这个?

kjthegm6

kjthegm61#

如果它可能会帮助其他人-我也有最初的问题,使用Fargate配置文件和核心-DNS的工作节点。我在另一个地方找到的解决方案就是添加

node_security_group_additional_rules = {
ingress_allow_access_from_control_plane = {
  type                          = "ingress"
  protocol                      = "tcp"
  from_port                     = 9443
  to_port                       = 9443
  source_cluster_security_group = true
  description                   = "Allow access from control plane to webhook port of AWS load balancer controller"
}

}

iyfjxgzm

iyfjxgzm2#

我假设您会收到如下错误消息,如果不是这样,请发布您的错误。

Error from server (InternalError): error when creating "anymanifest.yaml": Internal error occurred: failed calling webhook "vingress.elbv2.k8s.aws": Post "https://aws-load-balancer-webhook-service.kube-system.svc:443/validate-networking-v1beta1-ingress?timeout=10s": context deadline exceeded

通常,这是由于EKS控制平面无法使用WebHook端口与节点通信而导致的。

检查AWS-Load-Balenger-控制器Pod的日志,以检查它开始侦听的端口

{"level":"info","ts":1643365219.2410042,"logger":"controller-runtime.webhook","msg":"serving webhook server","host":"","port":9443}

为了解决此问题,在工作节点的安全组中,允许从EKS控制平面进行端口9443的通信

rlcwz9us

rlcwz9us3#

负载均衡器控制器Pod描述有关更多详细信息,可能会发生映像在ECR不可用的情况

tyg4sfes

tyg4sfes4#

这是公认答案的后续。如果您没有使用Fargate或对答案本身感到困惑,则原始来源指的是Terraform脚本

要从AWS控制台应用此解决方案,请执行以下操作:

1.找到集群的安全组。记下ID

1.选择节点的安全组,编辑入站连接。
1.添加新规则:Custom TCP9443,将集群安全组ID作为源

mwg9r5ms

mwg9r5ms5#

在我的案例中,我用这种方式分析了同样的问题:

1.我已经描述了aws-load-balancer-webhook-service K8S服务,我看到它没有端点
1.我查看了aws-load-balancer-controller K8s部署,它停留在0/0副本:/
1.我已经描述了aws-load-balancer-controller复制集,REPLICASET-CONTROLLER引发以下错误:

Error creating: pods "aws-load-balancer-controller-XXX-" is forbidden: error looking up service account kube-system/aws-load-balancer-controller: service account "aws-load-balancer-controller" not found

1.因此,我检查了服务帐户创建步骤,发现CloudForment流程(由eksctl create iamserviceaccount --name=aws-load-balancer-controller ...完成)失败
(堆栈名称:eksctl-<CLUSTER_NAME>-addon-iamserviceaccount-kube-system-aws-load-balancer-controller)
1.是因为外接程序存储库错误(帐号错误)
在此处选择正确的:https://docs.aws.amazon.com/eks/latest/userguide/add-ons-images.html

然后,为了应用修复,我已经:

1.删除了eksctl-<CLUSTER_NAME>-addon-iamserviceaccount-kube-system-aws-load-balancer-controller云表单堆栈
1.再次启动eksctl create iamserviceaccount --name=aws-load-balancer-controller命令
1.已将aws-load-balancer-controller复制集从0扩展到2

它奏效了;)

相关问题