如何将流量转发到特定的pod?

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

我有一个在内存数据库中使用的应用程序。我使用Pod创建了statefulset,让我们说3副本。用PVC存储数据库相关文件。

我使用Loabalancer来公开状态集。

因此,当流量每次转发到不同的pod时都会遇到负载均衡器。

无论如何,我可以根据某些条件控制Pod的负载平衡(例如,如果客户端IP是X转到pod Y)?

kubernetes load-balancing nlb statefulset
2个回答
3
投票

事实上,你有一个领导者/跟随者拓扑,要求将流量引导到所述nome(主节点)是有缺陷的,原因有两个:

  1. 当前领导人失败并且有新选举选出新领导人时会发生什么
  2. pod是短暂的这一事实,他们不应该在生产中扮演主要角色,而是使用部署及其副本。你想要实现的是反模式

在任何情况下,如果这是你想要的,也许你想阅读有关gateways in istio可以找到here


0
投票

您可以使用K8s入口资源来解决此问题。我认为你要做的是基于主机的路由。使用标签将您的pod放在不同的服务之后。在你的情况下,1 - 100落后于服务1,100 - 200落后于服务2,依此类推。然后创建入口资源,根据主机或路径将传入流量重定向到不同的服务,无论您需要什么。您可能必须使用像Nginx这样的代理才能在公共云平台中使用它。 YAML清单将是这样的:

apiVersion: extensions/v1beta1 kind: Ingress metadata: name: example-ingress annotations: kubernetes.io/ingress.class: nginx spec: rules: - host: host1.com http: paths: - path: /web1 backend: serviceName: service1 servicePort: 443 - path: /api/v1/a backend: serviceName: service2 servicePort: 80 - path: /api/v1/b backend: serviceName: service3 servicePort: 80 - host: host2.com http: paths: - path: /web2 backend: serviceName: service4 servicePort: 443 - path: /api/v2/a backend: serviceName: service5 servicePort: 80

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