redis cluster 模式在 kubernetes 平臺部署方案 只能提供給 k8s 叢集內的應用使用,對叢集外的應用根本用不了

Java jack80342 • at 2021-01-12 20:05:56 • 4 Views

redis cluster 模式在 kubernetes 平臺部署方案 只能提供給 k8s 叢集內的應用使用,對叢集外的應用根本用不了,因為一旦涉及到 move 命令,redis 節點只會給出內部的 pod ip,這個使得叢集外的應用根本連不上,因為這個涉及到 redis 的原始碼,redis 叢集節點的相互通訊使用的 redis 程序所在的環境的 ip,而這個 ip 就是 pod ip,相對的節點傳送給客戶端的 move 的 ip 也是 pod ip 。 現向萬能的社群徵求方案意見,大家可自由發表方案意見。

Total: 11
  • jj783850915 2021-01-12 00:20:36
    叢集前搞個代理?阿里雲的 redis 叢集似乎就是這麼搞的
  • lhx2008 2021-01-12 00:20:36
    pod ip 也可以是 underlay 的
  • ss098 2021-01-12 02:18:49
    可能需要一個 NodePort Service ?
  • Weny 2021-01-12 02:16:49
    handless 對映到公網,叢集配置裡填公網地址
  • jxlwqq 2021-01-12 09:23:05
    apply 個 對外的 Service 或者 Ingress
  • MatthewHan 2021-01-12 10:19:05
    搞個 type 為 NodePort 的 Service 可以暴露服務,預設的是 Service 是 ClusterIP 模式的,還有可以看下 Ingress 的相關內容。
  • monsterxx03 2021-01-12 10:22:05
    和 redis 沒關係, 取決於你用的什麼網路方案,比如 aws 上他們另外開發的 vpc cni plugin, 每個 pod 會被分配一個 vpc 內可路由的內網 ip, 給 redis cluster 設定 headless service 對映到 route53 上, 不在 k8s 內,但在 vpc 內的 pod 就能通過域名解析到正確的 ip.
  • haython 2021-01-12 14:20:25
    配置 redis 的 cluster-announce-ip
  • wennew 2021-01-12 14:18:25
    好像可以設定為宿主機的 ip,埠不一樣就行
  • hz570815725 2021-01-13 09:15:54
    講下我對 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
  • julyclyde 2021-01-13 14:17:27
    和 k8s service 基本上沒啥關係
    redis cluster 的客戶端知道叢集結構並且直接連線各節點
Add a reply
For Commenting you need to Login. If you dont have a Account you need to Register.