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

如果ı无法正确解释,可能很难解释,抱歉。

在我们的k8s集群中,我们有两个OpenStack-Load Balancer,因为我们想通过必须面向Internet的入口来公开我们的应用程序。在同一群集中,我们还部署了必须面向Intranet的pgadmin4。(只能从内部网络访问。)

因此在这些OpenStack-LB前面,我们还有f5负载平衡器,它处理https连接,ssl ..以及通过Intranet或Internet公开的逻辑。

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

PgAdmin4是Intranet,需要通过host.intranet.net/pgadmin4进行访问

所以问题是,当我尝试使用host.internet.net通过入口公开我的应用程序时,它将无法正常工作,并且收到以下错误消息,原因可能是它无法与正确的openStack-LB通信。当我试图通过openStack-lb IP公开所有内容时,一切正常。

{“级别”:“错误”,“消息”:“找不到以下服务 dev / oneapihub-ui-dev“,”时间“:” 2020-03-26T05:20:05Z“} {“ level”:“错误”,“ msg”:“找不到端点 dev / oneapihub-ui-dev“,”时间“:” 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
zdedu 回答:Kubernetes:通过traefik入口控制器处理集群中多个LoadBalancer的连接

您的错误状态为"Service not found for dev/oneapihub-ui-dev",这意味着traefik试图连接到它无法找到的名为“ oneapihub-ui-dev”的开发名称空间中的服务。

您需要确保该服务同时存在并且具有终结点。您可以使用kubectl -n dev get service oneapihub-ui-dev检查服务是否存在。如果存在,请检查其端点是否带有kubectl -n dev get ep oneapihub-ui-dev

编辑:如果该服务存在并且具有端点,则可能需要调查traefik的RBAC权限,以查看它是否具有足够的权限来查看dev命名空间,以及是否没有在dev命名空间上部署任何NetworkPolicies阻止入口名称空间连接。

,

我通过使用traefik使用labelSelector来解决了这个问题。我只为内部网络公开的服务带有标签,例如traffic-type = internal。。您还可以为RBAC权限提供名称空间。 / p>

  //given
  Pattern pattern = Pattern.compile("(\\w+)=(\\w+);");
  String line = "name1=gil;name2=orit;";

  Iterator<Matcher> all = 
    Iterator
      .continually(pattern.matcher(line))
      .takeWhile(matcher -> matcher.find());

  //use it like
  io.vavr.collection.Map<String,String> map = 
    all.toMap(m->m.group(1),m->m.group(2));
本文链接:https://www.f2er.com/2577674.html

大家都在问