【问题标题】:Is there any way to do name based routing in Kubernetes有没有办法在 Kubernetes 中进行基于名称的路由
【发布时间】:2019-04-03 13:44:10
【问题描述】:

我们正在尝试对托管在 HA(节点 1 和节点 2)配置中托管的 JBoss Wildfly 服务器上的一组 web 应用进行 docker 化。 JBoss 服务器前面有一个 F5 负载平衡器服务器,执行基于粘性会话的负载平衡。因此,就 F5 而言,它只有一个端口 (443) 用于侦听并将请求转发到 JBoss 节点 1 或节点 2。因此,F5 不需要有关单独应用程序的任何信息(例如 @ 987654321@ & https://domain.name/app2) 托管在 JBoss 服务器上。

现在我们将每个 webapp docker 化到它自己的容器中,并包装成一个 Kubernetes pod。在 Kubernetes 服务层上,每个应用程序(/app1 和 /app2)都托管在不同的端口上。所以每个应用程序都有自己的端口。

我有哪些负载平衡架构选项,您能否指出一些相关的阅读材料? 1) F5 能否以某种方式使用有关哪个 URL 上下文路径(/app1 或 /app2)的元数据并将其路由到 Kubernetes 服务层上的适当端口? 2) 如果 F5 不能在 F5 上做任何基于上下文路径的路由,那么可以通过一些 Kuberneetes 配置来完成一些应用到端口的路由吗?

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    为此,您可能需要一个入口控制器。您可以通过https://kubernetes.io/docs/concepts/services-networking/ingress/获取有关入口控制器的详细信息

    在您的观点上,“在 Kubernetes 服务层上,每个应用程序(/app1 和 /app2)都托管在不同的端口上。因此每个应用程序都有自己的端口。” 下面给出的示例是针对入口控制器,考虑到您的 app1 的服务名称是 app1-svc,而 app2 的服务名称是 app2-svc

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: foo-https
      annotations:
        nginx.ingress.kubernetes.io/ssl-passthrough: "true"
        nginx.ingress.kubernetes.io/secure-backends: "true"
    spec:
      tls:
       - hosts:
         - domain.name
      rules:
      - host: domain.name 
        http:
          paths:
          - path: /app1
            backend:
              serviceName: app1-svc
              servicePort: 443
          - path: /app2
            backend:
              serviceName: app2-svc
              servicePort: 443
    

    【讨论】:

    • 感谢分享信息。将进一步探索。
    猜你喜欢
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    相关资源
    最近更新 更多