繁体   English   中英

kubernetes - 将入口流量路由到某些路径的特定 pod

[英]kubernetes - route ingress traffic to specific pod for some paths

我有多个 pod,它们会自动放大和缩小。

我正在使用入口作为入口点。 我需要根据某些条件(比如说路径)将外部流量路由到特定的 pod。 在提出请求时,我确信特定的 pod 已启动。

例如,假设我有域 someTest.com,通常将流量路由到 pod 1、2 和 3(假设我通过内部 ips 识别它们 - 192.168.1.10、192.168.1.11 和 192.168.1.13)。

当我调用 someTest.com/specialRequest/12 时,我需要将流量路由到 192.168.1.12,当我调用 someTest.com/specialRequest/13 时,我想将流量路由到 192.168.1.13。 对于正常情况(someTest.com/normalRequest),我只想让 lb 正常完成他的史诗般的工作。

如果 pod 扩大并出现 192.168.1.14,我需要能够调用 someTest.com/specialRequest/14 并被路由到提到的 pod。

无论如何我可以做到这一点吗?

是的,您可以使用 Kubernetes Ingress 轻松实现此目的。 这是一个可能有帮助的示例代码:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: app-ingress
  spec:
    rules:
    - host: YourHostName.com
      http:
        paths:
        - path: /
          backend:
            serviceName: Service1
            servicePort: 8000
        - path: /api
          backend:
            serviceName: Service2
            servicePort: 8080
        - path: /admin
          backend:
            serviceName: Service3
            servicePort: 80

请注意,入口规则有 serviceNames 而不是 pod 名称,因此您必须为您的 pod 创建服务。 这是一个将 nginx 公开为 Kubernetes 中的服务的服务示例:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  labels:
    io.kompose.service: nginx
spec:
  ports:
  - name: "80"
    port: 80
    targetPort: 80
  selector:
    io.kompose.service: nginx

我不知道实现此功能的内置功能(如果这是您真正想要的)。 您可以通过为 Kubernetes 构建自己的运算符来实现此目的。 您的操作员可能会配置一个 Pod+Ingress 组合,这将完全按照您的要求进行 - 将您的流量转发到一个 pod,或者您可以配置 2 个 pod 和 1 个入口以实现 HA 设置。

根据您使用的 Ingress,也可以将多个 Ingress 资源分组在同一个负载均衡器下。

这是一个简短的图表,说明它的外观。 示例运算符

创建另一个可以通过命名约定中的模式直接获取路径并以 pod 为目标的应用程序是否可行? 例如

${podnamePrefix+param}.${服务名称}.${命名空间}.svc.cluster.local

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM