是否可以将流量路由到特定的Pod?

问题描述 投票:4回答:2

假设我在GKE中运行我的应用程序,这是一个多租户应用程序。

我创建了多个承载我的应用程序的Pod。

现在我想:客户1-1000使用Pod1客户1001-2000来使用Pod2等

如果我有一个指向我的集群的云全局IP,是否可以将基于传入IP地址/域的请求路由到包含客户数据的正确Pod?

kubernetes gcloud google-kubernetes-engine
2个回答
2
投票

您可以保证与服务的会话关联,但不能像您描述的那样。因此,您的客户1-1000将不会使用pod-1,但他们将使用所有pod(作为服务进行简单的负载平衡),但每个客户在返回到您的服务时,将被重定向到同一个豆荚

注意:始终在(默认10800)中指定的时间内:

service.spec.sessionAffinityConfig.clientIP.timeoutSeconds

这将是服务的yaml文件:

kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 80
  sessionAffinity: ClientIP

如果您还想指定时间,则需要添加以下内容:

  sessionAffinityConfig:
    clientIP:
      timeoutSeconds: 10

请注意,上面的示例将直接命中ClusterIP类型服务(这是非常罕见的)或使用Loadbalancer类型服务,但不会使用Ingress在NodePort类型服务之后。这是因为对于Ingress,请求来自许多随机选择的源IP地址。


1
投票

不是Pod本身,但你应该能够使用服务。

豆荚意图是无国籍的,彼此难以区分。

但是,您应该能够为每个客户组创建一个部署,并为每个部署创建一个服务。应该能够告诉Ingress nginx通过与特定客户组服务相关的任何属性来映射传入请求。

© www.soinside.com 2019 - 2024. All rights reserved.