我将在多个pod中部署我的golang应用程序,另一方面部署多个redis节点,每个节点都有自己的持久化卷,这意味着每个节点都有不同的数据,如下所示,您能告诉我如何使用Kubernetes来实现这一点吗?我会有一个go应用程序的部署与3副本,因为他们是无状态的,这部分很容易,但对于redis我也将有另一个部署与3副本,但我应该如何让kuebernetes连接每个pod与不同的PV?
---------- ----------
| Go-app | ----------- | Redis-1 |
---------- ----------
|__ PV-1
---------- ----------
| Go-app | ----------- | Redis-2 |
---------- ----------
|__ PV-2
---------- ----------
| Go-app | ----------- | Redis-3 |
---------- ----------
|__ PV-3发布于 2020-06-12 00:37:58
您可以安装bitnami redis helm chart来创建每个具有自己持久性的redis pod,storage.You可以配置helm chart中的所有属性。但在这种情况下,应用程序pod将不会映射到redis,就像在diagram.The图表中安装状态集redis一样。您可以通过redis.namespace.svc.cluster.local访问redis节点。
一般来说,为了可伸缩性和可用性,最好将应用程序部署和redis部署分开。
但是,您的特定用例可以通过创建一个StatefulSet来实现,其中每个pod中都有两个容器:
主应用程序container
)的
然后,您可以为StatefulSet Yaml中的每个pod指定持久卷。在这里,实现您的情况的概念是Sidecar模式,其中支持容器可以与主容器一起部署在同一pod.Though中,建议创建仅包含一个容器的pod。在需要高可用性和可伸缩性的情况下,您应该将redis作为单独的部署来运行,而不是sidecar。
希望这能有所帮助。
https://stackoverflow.com/questions/62325696
复制相似问题