Почему 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=api
10 запускают только модули этого развертывания, и ни один другой работник не запускает этот сервис. У меня также нет другого сервиса или контейнера, использующего порт 8080
1 ответ
Таким образом, ALB-контроллер на самом деле не проверяет ваши метки и т. Д. Он просто смотрит на метки в вашей подсети. Итак, если ваши рабочие узлы работают внутри подсети с тегом kubernetes.io/role/alb-ingress
или что-то в этом роде, все ваши рабочие узлы из него будут добавлены в балансировщик нагрузки.
Я считаю, что это часть документации по автообнаружению