【问题标题】:Redis cluster on Google Container Engine (GKE - Kubernetes)Google Container Engine 上的 Redis 集群 (GKE - Kubernetes)
【发布时间】:2018-12-25 21:12:55
【问题描述】:

我已经在 Kubernetes (Google Container Engine) 上设置了 redis-cluster。引用自:https://github.com/zuxqoj/kubernetes-redis-cluster/blob/master/README-using-statefulset.md

所以目前的状态是,我们在 Kubernetes Cluster 的单个节点下有 6 个 pod,3 个 pod 作为 master,3 个 pod 作为 slave。已将所有 pod 放入 redis-cluster,一切正常。

但是,当我尝试关闭其中一个主/从 pod 时,kubernetes 会自动启动一个具有新 IP 的新 pod。并且新 IP 正在所有其他 pod 节点配置中自动更新,除了它自己的节点配置。 有什么我遗漏的吗?

我使用的是 redis 4.0.0

Redis 集群 Yaml:https://drive.google.com/open?id=1oSQzYu-pAJmehaAfU_HdIa3qAJBx1n5C

【问题讨论】:

  • 如果可能,请发布您的 k8s 配置 yaml 和您看到的有问题的节点配置
  • 这个问题是针对ServerFault的。
  • @WilliamChong - 用 YAML 编辑了我的问题。 yaml 也有配置。请提出那里需要的任何更改?

标签: java google-kubernetes-engine redis-cluster


【解决方案1】:

尝试使用 DNS 主机名而不是 IP 地址。

查看 Helm 图表就是这样做的:

【讨论】:

    【解决方案2】:

    您需要在nodes.conf 中更新新pod 的IP。 您可以通过在 Pod 的初始化中运行此脚本来完成。

    #!/bin/sh
    
    set -e
    
    REDIS_NODES_FILE="/data/nodes.conf"
    
    if [ -f ${REDIS_NODES_FILE} ]; then
      if [ -z "${POD_IP}" ]; then
        echo "Unable to determine Pod IP address!"
        exit 1
      fi
      echo "Updating my IP to ${POD_IP}"
      sed -i.bak -e "/myself/ s/[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}/${POD_IP}/" ${REDIS_NODES_FILE}
    fi
    

    起源于: https://github.com/antirez/redis/issues/5417

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 2015-10-25
      • 1970-01-01
      • 2020-11-21
      • 1970-01-01
      • 2017-03-26
      • 2016-06-01
      相关资源
      最近更新 更多