redis cluster 模式在 kubernetes 平臺部署方案 只能提供給 k8s 叢集內的應用使用,對叢集外的應用根本用不了,因為一旦涉及到 move 命令,redis 節點只會給出內部的 pod ip,這個使得叢集外的應用根本連不上,因為這個涉及到 redis 的原始碼,redis 叢集節點的相互通訊使用的 redis 程序所在的環境的 ip,而這個 ip 就是 pod ip,相對的節點傳送給客戶端的 move 的 ip 也是 pod ip 。 現向萬能的社群徵求方案意見,大家可自由發表方案意見。
Total: 11
-
叢集前搞個代理?阿里雲的 redis 叢集似乎就是這麼搞的
-
pod ip 也可以是 underlay 的
-
可能需要一個 NodePort Service ?
-
handless 對映到公網,叢集配置裡填公網地址
-
apply 個 對外的 Service 或者 Ingress
-
搞個 type 為 NodePort 的 Service 可以暴露服務,預設的是 Service 是 ClusterIP 模式的,還有可以看下 Ingress 的相關內容。
-
和 redis 沒關係, 取決於你用的什麼網路方案,比如 aws 上他們另外開發的 vpc cni plugin, 每個 pod 會被分配一個 vpc 內可路由的內網 ip, 給 redis cluster 設定 headless service 對映到 route53 上, 不在 k8s 內,但在 vpc 內的 pod 就能通過域名解析到正確的 ip.
-
配置 redis 的 cluster-announce-ip
-
好像可以設定為宿主機的 ip,埠不一樣就行
-
講下我對 redis cluster 的三個理解:
1:k8s 上使用 StateFulSet 部署 redis cluster
2:需要叢集外訪問,兩個辦法,一是從 StateFulSet 通訊角度出發,可以檢視這篇文章,作者是 k8s 的工程師。Exposing StatefulSets in Kubernetes | by Bob Killen | ITNEXT
https://itnext.io/exposing-statefulsets-in-kubernetes-698730fb92a1 。根據他的文章,那麼我們需要對 Redis 例項域名進行處理。二則是直接暴露 Node 的 IP,我對他進行了實現和實踐,並寫成了部落格,連結在最後。
3:Chart 化,工具元件的本質是易用性,所以是有必要對其進行封裝簡化部署的。但我看到 Chart 包的 redis 叢集,基本上都是 HA 哨兵實現的
K8s 部署 Redis Cluster 叢集 | 猥瑣發育不要浪
https://www.gotkx.com/?p=76 -
和 k8s service 基本上沒啥關係
redis cluster 的客戶端知道叢集結構並且直接連線各節點
Add a reply