Зачем нужен балансировщик нагрузки перед ingress kubernetes?

Пытаюсь сделать точку входа через kubernetes ingress.

Для чего создаю сам ресурс:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: test_ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - host: nginx.cluster.local
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: service-test1
                port:
                  number: 80
          - path: /admin
            pathType: Prefix
            backend:
              service:
                name: service-test2
                port:
                  number: 80

Также, для него нужен контроллер. Это выглядит логично. Беру официально поддерживаемый NGINX Ingress Controller.

Ставлю на кластер между виртуальными машинами, на "голом" железе. Так что взял соответствующий контроллер:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.0/deploy/static/provider/baremetal/deploy.yaml

Вопрос: а для чего нужна балансировка перед ingress, например haproxy? Разве nginx controller не может балансировать?


Ответы (1 шт):

Автор решения: timmilesdw

В документации ingress-nginx описан этот момент https://kubernetes.github.io/ingress-nginx/deploy/baremetal/

Если в кратце, то внешний балансировщик должен использоваться для того, чтоб создать отказоустойчивую, единую точку входа. Можно обойтись и без внешнего балансировщика, посмотрите в сторону metallb

→ Ссылка