Docker 如何在kubernetes中部署具有不同持久卷的多个redis(无群集)pod

Docker 如何在kubernetes中部署具有不同持久卷的多个redis(无群集)pod,docker,kubernetes,redis,Docker,Kubernetes,Redis,我将在多个POD中部署我的golang应用程序,另一方面部署多个redis节点,每个节点都有自己的持久卷,这意味着每个节点都有不同的数据,如下图所示,您能告诉我如何使用Kubernetes实现这一点吗?我将为go应用程序部署一个3副本的部署,因为它们是无状态的,这一部分很容易,但对于redis,我也将部署另一个3副本的部署,但是我应该如何让kuebernetes用不同的PV连接每个pod ---------- ---------- | Go-app | -------

我将在多个POD中部署我的golang应用程序,另一方面部署多个redis节点,每个节点都有自己的持久卷,这意味着每个节点都有不同的数据,如下图所示,您能告诉我如何使用Kubernetes实现这一点吗?我将为go应用程序部署一个3副本的部署,因为它们是无状态的,这一部分很容易,但对于redis,我也将部署另一个3副本的部署,但是我应该如何让kuebernetes用不同的PV连接每个pod

----------              ----------
| Go-app |  ----------- | Redis-1 |
----------              ----------
                            |__ PV-1

----------              ----------
| Go-app |  ----------- | Redis-2 |
----------              ----------
                            |__ PV-2

----------              ----------
| Go-app |  ----------- | Redis-3 |
----------              ----------
                            |__ PV-3
您可以安装图表来创建每个redis pod,每个redis pod都有自己的持久性存储。您可以在helm图表中配置所有属性。但在这种情况下,应用程序pod将不会像图中那样映射到redis。图表将安装一个StatefolSet redis。您可以通过redis.namespace.svc.cluster.local访问redis节点

一般来说,最好将应用程序部署和redis部署分开,以实现可扩展性和可用性

但是,您的特定用例可以通过创建一个容器来实现,其中每个pod中都有两个容器:

您的主应用程序容器 Redis容器作为侧车 然后,您可以为StatefulSet Yaml中的每个pod指定持久卷。在这里,实现您的案例的概念是一个侧车模式,其中支持容器可以与主容器部署在同一个吊舱中。尽管建议创建只包含一个容器的吊舱。如果需要高可用性和可扩展性,您应该将redis作为单独的部署运行,而不是作为一个侧车运行

希望这有帮助