首页 > 解决方案 > 为什么 Kubernetes (AWS EKS) 将所有工作人员注册到负载均衡器?

问题描述

我想知道这是默认行为还是我的设置有问题。

我有 150 名工人在 Kubernetes 上运行。

我使用 nodeSelector 让一组 kubernetes 工作人员(10 个工作人员)仅运行特定部署,我为它创建了一个服务(type=LoadBalancer),当创建负载均衡器时,Kubernetes 的所有 150 个工作人员都注册到负载均衡器,虽然我期望只看到此部署/服务的这组工作人员(10 名工作人员)。

它的行为与alb-ingress-controller和相同AWS NLB

kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
  - port: 8080
  type: LoadBalancer

和部署

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  selector:
    matchLabels:
      app: my-app
  replicas: 10
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: master-api
        image: private/my-app:prod
        resources:
          requests:
            memory: 8000Mi
        ports:
        - containerPort: 8080
      nodeSelector:
        role: api 

我已经被标记为 10 个工作节点,标签role=api 为 10 只运行此部署的 pod,并且没有其他工作人员正在运行此服务我也没有使用端口 8080 的其他服务或容器

标签: amazon-web-serviceskubernetesamazon-eks

解决方案


所以 ALB 控制器实际上不会检查您的标签等。它纯粹是查看子网中的标签。因此,如果您的工作节点在带有标签kubernetes.io/role/alb-ingress或类似标签的子网内运行,则其中的所有工作节点都将添加到负载均衡器中。

我相信它是自动发现事物文档的一部分


推荐阅读