Kubernetes:通过traefik入口控制器处理与集群中多个LoadBalancer的连接



如果ı不能正确解释,可能很难解释。

在我们的k8s集群中,我们有两个OpenStack负载均衡器,因为我们想通过必须面向互联网的入口来公开我们的应用程序。在同一集群中,我们还部署了pgadmin4,它必须面向intranet。(只能从内部网络访问。(

因此,在这些OpenStack LB之前,我们还有f5负载均衡器,它处理https连接,ssl。。以及通过内联网或互联网公开的逻辑。

MyApp面向互联网,需要通过host.internet.net 访问

PgAdmin4是内部网,需要通过host.intranet.net/PgAdmin4 访问

因此,问题是,当我试图使用host.internet.net通过ingress公开我的应用程序时,它不会工作,并且收到以下错误,因为它可能无法与正确的openStack-LB通信。当ı试图通过openStack lb IP暴露时,一切都正常工作。

{"level":"error","msg":"找不到的服务dev/oneapihub-ui-dev","time":"2020-03-26T05:20:5Z"}{"level":"error","msg":"找不到的终结点dev/oneapihub-ui-dev","time":"2020-03-26T05:20:5Z"}

问题是,我如何通过入口控制器处理这个问题?我应该安装另一个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

错误状态为"Service not found for dev/oneapihub-ui-dev",这意味着traefik正试图连接到名为"oneapihub-ui-dev"的dev命名空间中的服务,但它找不到该服务。

您需要确保服务存在并且具有端点。您可以检查kubectl -n dev get service oneapihub-ui-dev是否存在服务。如果它存在,请检查它是否具有kubectl -n dev get ep oneapihub-ui-dev的端点。

编辑:如果服务存在并具有终结点,那么您可能需要查看traefik的RBAC权限,看看它是否有足够的权限来查看dev命名空间,以及您是否没有在dev命名空间上部署任何阻止ingress命名空间连接的NetworkPolicies。

我通过使用traefik的labelSelector解决了这个问题。。我只为内部网络公开的服务有一个标签,比如流量类型=内部。。您还可以为RBAC权限提供一个命名空间。

kubernetes:
namespaces:
- default
- database
- monitoring
- logging
- ingress
labelSelector: "traffic-type=internal"

相关内容

  • 没有找到相关文章

最新更新