Kubernetes 有没有办法防止EC2负载平衡器使用EKS节点组(EC2自动校准组)?

Kubernetes 有没有办法防止EC2负载平衡器使用EKS节点组(EC2自动校准组)?,kubernetes,kubernetes-ingress,amazon-elb,amazon-eks,Kubernetes,Kubernetes Ingress,Amazon Elb,Amazon Eks,我使用eksctl创建了一个EKS集群,其中包含两个非托管节点组ingress nginx和群集autoscaler已部署并工作ingress nginxcontroller在部署时创建了一个经典的负载平衡器 当任一节点组向上扩展时,其实例将添加到LB中。(问题:采取此操作的是什么?它不是ASG本身,因此我假设它是ingress nginx执行此操作)。此外,我看到所有实例(来自两个ASG)对LoadBalancer上的TCP healthcheck响应为“健康” 问题是:我只需要将一个节点组列

我使用
eksctl
创建了一个EKS集群,其中包含两个非托管节点组
ingress nginx
群集autoscaler
已部署并工作
ingress nginx
controller在部署时创建了一个经典的负载平衡器

当任一节点组向上扩展时,其实例将添加到LB中。(问题:采取此操作的是什么?它不是ASG本身,因此我假设它是
ingress nginx
执行此操作)。此外,我看到所有实例(来自两个ASG)对LoadBalancer上的TCP healthcheck响应为“健康”

问题是:我只需要将一个节点组列为符合负载平衡条件的白名单。另一个ASG(以及任何未来的ASG,默认情况下)是批处理工作程序,不承载任何internet服务,并且不会在其上调度任何web服务吊舱


这是否可能在EKS中实现,以及如何实现?

您是对的,这是Kubernetes
LoadBalancer
服务(如Nginx Ingress)的默认行为
LoadBalancer
在引擎盖下使用
NodePort
服务,该服务在所有群集节点上公开,而不考虑它们所属的EKS节点组

您应该做的是将
externalTrafficPolicy:Local
添加到您的Nginx入口
LoadBalancer
中,就像这样(这只是一个示例):

这样做将导致AWS负载平衡器只针对那些实际运行Nginx入口吊舱的节点。之后,您可能希望使用Nginx入口
节点选择器
仅在所需的EKS节点组上运行

apiVersion: v1
kind: Service
metadata:
  name: example-service
spec:
  selector:
    app: example
  ports:
    - port: 8765
      targetPort: 9376
  externalTrafficPolicy: Local
  type: LoadBalancer