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

时间:2018-02-26 16:49:09

标签: kubernetes gcloud google-kubernetes-engine

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

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

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

如果我有一个指向我的群集的gcloud全局IP,是否可以根据传入的ipaddress / domain将请求路由到包含客户数据的正确Pod?

2 个答案:

答案 0 :(得分: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 :(得分:1)

不是自己使用Pod,但您应该能够使用服务。

Pods是无国籍的,彼此无法区分。

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