Почему Kubernetes (AWS EKS) регистрирует всех работников в балансировщике нагрузки?

Я хочу знать, является ли это поведение по умолчанию или что-то не так с моей настройкой.

У меня 150 рабочих на Куберне.

Я сделал набор рабочих kubernetes (10 рабочих), выполняющих только определенное развертывание, используя nodeSelector, я создал сервис (type=LoadBalancer) для него, когда был создан Load Balancer, все 150 рабочих Kubernetes были зарегистрированы в Load Balancer, в то время как я ожидал увидеть только этот набор работников (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=api10 запускают только модули этого развертывания, и ни один другой работник не запускает этот сервис. У меня также нет другого сервиса или контейнера, использующего порт 8080

1 ответ

Таким образом, ALB-контроллер на самом деле не проверяет ваши метки и т. Д. Он просто смотрит на метки в вашей подсети. Итак, если ваши рабочие узлы работают внутри подсети с тегом kubernetes.io/role/alb-ingress или что-то в этом роде, все ваши рабочие узлы из него будут добавлены в балансировщик нагрузки.

Я считаю, что это часть документации по автообнаружению

Другие вопросы по тегам