Kubernetes: обрабатывать соединения с несколькими LoadBalancer в кластере через входной контроллер traefik - PullRequest
0 голосов
/ 26 марта 2020

Это может быть трудно объяснить, так что извините, если я не могу объяснить правильно.

В нашем кластере k8s у нас есть два OpenStack-Load Balancer, потому что мы хотим представить наше приложение через вход, который должен быть целым rnet облицовка. В том же кластере мы также развернули pgadmin4, который должен быть обращен к int anet (доступен только из внутренней сети).

Итак, перед этими OpenStack-LB у нас также есть f5 Load Balancer, который обрабатывает соединение https , ssl .. а также logi c для предоставления через intr anet или inte rnet.

MyApp обращен к inte rnet и должен быть доступен с host.inte rnet. net

PgAdmin4 является intr anet и должен быть доступен через host.intr anet .net / pgadmin4

Таким образом, проблема заключается в том, когда я пытаюсь выставить свое приложение через вход с помощью хоста .inte rnet. net это не сработает, и я получил сообщение об ошибке ниже, возможно, он не может связаться с правильным openStack-LB. Когда я пытался выставить через IP openStack-lb все работает правильно.

{"level": "error", "msg": "Служба не найдена для dev / oneapihub-ui-dev", "time": "2020-03-26T05: 20: 05Z"} {"level": "error", "msg": "конечные точки не найдены для dev / oneapihub-ui-dev", "time": "2020- 03-26T05: 20: 05Z "}

И вопрос в том, как я могу решить эту проблему через входной контроллер? Должен ли я ввести другой входной контроллер traefik?

capel0068340585:~ semural$ kubectl get ingress -n ingress
NAME                        HOSTS   ADDRESS   PORTS   AGE
ingress-traefik-dashboard   *                 80      21d

kubectl get tenantSpec -o yaml

    loadBalancers:
    - ip: <IP1>
      name: LBaaS2
      ports:
      - extPort: 80
        name: "80"
        nodePort: 30001
    - ip: <IP2>
      name: LBaaS1
      ports:
      - extPort: 80
        name: "80"
        nodePort: 30000

NAME                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
service/oneapihub-ui-dev        ClusterIP   10.254.173.130   <none>        80/TCP     15m

NAME                        ENDPOINTS           AGE
endpoints/oneapihub-ui-dev        10.6.24.136:3000    15m

ingress:
  enabled: true
  annotations:
    kubernetes.io/ingress.class: traefik
  hosts:
    - host:  host.internet.net -> example
      paths: [/]
  tls: []

ingress:
  enabled: ingress
  annotations: 
    kubernetes.io/ingress.class: traefik
  hosts:
    - host: host.intranet.net
      paths:
      - /pgadmin4

1 Ответ

1 голос
/ 26 марта 2020

Состояние ошибки "Service not found for dev/oneapihub-ui-dev", что означает, что traefik пытается подключиться к Сервису в пространстве имен dev с именем "oneapihub-ui-dev", который не может быть найден.

Необходимо убедиться, что оба Сервис существует и имеет конечные точки. Вы можете проверить, существует ли Сервис с помощью kubectl -n dev get service oneapihub-ui-dev. Если он существует, проверьте, есть ли у него конечные точки с kubectl -n dev get ep oneapihub-ui-dev.

РЕДАКТИРОВАТЬ: если служба существует и имеет конечные точки, то вы можете обратиться к разрешениям RBA C traefik, чтобы узнать, имеет ли она достаточно разрешений для просмотра в пространстве имен dev, и если вы не развернете какие-либо сетевые политики в пространстве имен dev, которые препятствуют подключению входящего пространства имен.

...