Почему существует АДРЕС для входного сервиса? Какая польза от этого АДРЕСА? - PullRequest
0 голосов
/ 31 октября 2019

Я развертываю свой кластер в GKE с помощью Ingress Controller

Я использую Helm для установки следующего:

  • Установлено ВходКонтроллер
  • Развернутая служба балансировки нагрузки (также создайте балансировщик нагрузки на GCP)

Я также развернул Ingress Object (Configкак показано ниже)


Затем я наблюдал следующее состояние ...

Контроллер входа (Служба балансировки нагрузки) имеет две конечные точки: 35.197. XX.XX: 80, 35.197.XX.XX: 443

Эти две конечные точки выставляются балансировщиком нагрузки Cloud. У меня нет проблем с этим.

Однако, когда я выполняю kubectl get ing ingress-service -o wide, он выводит следующую информацию.

NAME              HOSTS             ADDRESS       PORTS     AGE
ingress-service   k8s.XX.com.tw   34.87.XX.XX   80, 443   5h50m

Я действительно не использую IP подстолбец ADDRESS.

Я также вижу, что Google добавил в конец моего файла конфигурации Ingress некоторую дополнительную информацию об IP-адресе балансировщика нагрузки.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
   ....(ommitted)
spec:
  rules:
  - host: k8s.XX.com.tw
    http:
      paths:
      - backend:
          serviceName: client-cluster-ip-service
          servicePort: 3000
        path: /?(.*)
      - backend:
          serviceName: server-cluster-ip-service
          servicePort: 5000
        path: /api/?(.*)
  tls:
  - hosts:
    - k8s.XX.com.tw
    secretName: XX-com-tw
status:
  loadBalancer:
    ingress:
    - ip: 34.87.XX.XX

Согласно Googledoc , это ( 34.87.XX.XX ) выглядит как внешний IP, но я не могу получить к нему доступ с помощью http://34.87.XX.XX


Мой вопрос заключается в том, что су нас уже есть внешний IP-адрес (35.197.XX.XX) для приема трафика. Зачем нам нужен этот АДРЕС для входной службы ?

Если это внутренний или внешний IP-АДРЕС? С чем связан этот АДРЕС? Для чего именно используется этот АДРЕС?

Может кто-нибудь пролить свет? Большое спасибо!

1 Ответ

1 голос
/ 31 октября 2019

Если вы просто посмотрите документацию, у вас будет ответ.

Что такое входной ресурс: https://kubernetes.io/docs/concepts/services-networking/ingress/#what-is-ingress

Итак, следуйте документу:

Ingress предоставляет маршруты HTTP и HTTPS извне кластера для служб внутри кластера. Маршрутизация трафика контролируется правилами, определенными на ресурсе Ingress.

Чтобы быть более точным в облачном провайдере, на входе будет создан балансировщик нагрузки для предоставления услуги Интернету. Документация по теме, специфичной для gke: https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer

Это объясняет, почему у вас есть внешний ip для входа.

Что вы должны сделать сейчас:

  • Если вы не хотите открывать порты HTTP или / и HTTPS, просто удалите входной ресурс, вы его не используете, поэтому он практически бесполезен.
  • Если вы используете ресурсы HTTP / HTTPS, измените свойтип сервиса для nodePort и оставить управление балансировщиком нагрузки на входе.

Мое мнение таково, что при развертывании ингресс-контроллера вы должны выбрать второй вариант и оставить управлениебалансировщик нагрузки к нему. Для входа в ингресс-контроллер не определяйте правила только для бэкэнда службы nodePort, правила должны быть определены в конкретном входе для каждого приложения и управляться ингресс-контроллером.

...