簡體   English   中英

如何在 kube.netes 中部署具有不同持久卷的多個 redis(無集群)pod

[英]how to deploy multiple redis (none cluster) pod with different persistent volume in kubernetes

我將在多個 pod 中部署我的 golang 應用程序,另一方面部署多個 redis 節點,每個節點都有自己的持久卷,這意味着每個節點都有不同的數據,如下所示,你能告訴我我是怎么做的嗎可以用 Kube.netes 實現嗎? 我將為具有 3 個副本的 go 應用程序部署一個,因為它們是無狀態的,這部分很容易,但是對於 redis,我還將有另一個具有 3 個副本的部署,但是我應該如何讓 kuebe.netes 將每個 pod 連接到不同的 PV ?

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

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

----------              ----------
| Go-app |  ----------- | Redis-3 |
----------              ----------
                            |__ PV-3

您可以安裝bitnami redis helm chart 以創建每個 redis pod 及其自己的持久性存儲。您可以在 helm chart 中配置所有屬性。 但在這種情況下,應用程序 pod 不會像圖中那樣映射到 redis。圖表安裝了一個狀態集 redis。您可以通過redis.namespace.svc.cluster.local訪問 redis 節點。

一般來說,最好將應用程序部署和 redis 部署分開,以實現可擴展性和可用性。

但是,您的特定用例可以通過創建一個StatefulSet來實現,其中每個 pod 中都有兩個容器:

  1. 您的主要應用程序容器
  2. Redis 容器(作為邊車

然后,您可以為 StatefulSet Yaml 中的每個 pod 指定持久卷。這里實現您的案例的概念是 Sidecar 模式,其中支持容器可以與主容器一起部署在同一個 pod 中。盡管建議創建僅包含一個容器的 pod . 如果需要高可用性和可擴展性,您應該將 redis 作為單獨的部署而不是 sidecar 運行。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM