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

zoz*_*ozo 7 routes kubernetes kubernetes-ingress nginx-ingress

我有多个 Pod,可以自动扩展和缩小。

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

例如,假设我有域 someTest.com,通常将流量路由到 pod 1、2 和 3(假设我通过内部 ip - 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),我只想正常地完成他的史诗般的工作。

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

无论如何我可以实现这个目标吗?

小智 5

是的,您可以使用 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
Run Code Online (Sandbox Code Playgroud)

请注意,入口规则具有 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
Run Code Online (Sandbox Code Playgroud)

  • +1表示努力并欢迎来到SO:)。但这正是我的问题。Pod 自动扩展,服务手动创建。我需要瞄准动态的东西(pod)而不是静态的东西(服务)。 (3认同)

gp4*_*p42 4

我不知道实现此功能的内置功能(如果这是您真正想要的)。您可以通过为 Kubernetes 构建自己的操作器来实现这一点。您的运营商可以配置 Pod+Ingress 组合,这将完全满足您的需求 - 将流量转发到单个 Pod,或者您可以配置 2 个 Pod 和 1 个入口来实现 HA 设置。

根据您使用的入口,还可以将多个入口资源分组到同一负载均衡器下。

这是一个简单的图表,展示了它的样子。 示例运算符