假设我在GKE中运行我的应用程序,这是一个多租户应用程序。
我创建了多个承载我的应用程序的Pod。
现在我想:客户1-1000使用Pod1客户1001-2000来使用Pod2等
如果我有一个指向我的集群的云全局IP,是否可以将基于传入IP地址/域的请求路由到包含客户数据的正确Pod?
您可以保证与服务的会话关联,但不能像您描述的那样。因此,您的客户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地址。
不是Pod本身,但你应该能够使用服务。
豆荚意图是无国籍的,彼此难以区分。
但是,您应该能够为每个客户组创建一个部署,并为每个部署创建一个服务。应该能够告诉Ingress nginx通过与特定客户组服务相关的任何属性来映射传入请求。