首页 文章

在Kubernetes中创建一个redis sentinel集群,redis master无法获得从属IP

提问于
浏览
4

我使用K8s示例在Kubernetes上创建可靠,可扩展的Redis . https://github.com/kubernetes/kubernetes/tree/master/examples/redis

Redis主站需要获取原始IP的slave,并注册到sentinel . 当master失败时,Sentinel将用于切换master .

但我的docker在没有标志iptables = false的情况下启动(它将创建一个像SNAT一样的iptables),因此redis slave源IP将是SNAT,而master将获得flannel0的IP,如172.16.103.0 .

我还将法兰绒网络添加到节点之间的容器连接 .

所以问题是“有没有办法在不删除iptables标志的情况下获取源IP,或者以其他方式创建可靠的redis集群 . ”

2 回答

  • 0

    编辑:我已经找到了标志的神奇组合,以使其工作 .

    1)运行停止docker和bootstrap docker进程

    systemctl stop docker && pkill -f "docker-bootstrap" && sleep 10
    

    2)删除iptables规则:

    iptables -F && iptables -t nat -F
    

    3)使用ip-masq = false选项运行docker-daemon
    4)使用ip-masq = true选项运行你的flanneld

    对我来说,这使得所有三个pod-> pod,pod-> ext,&ext-> service-> pod都能完美运行 .

    希望这对你们其他人有用!


    (保留描述症状的初始反应)

    我和指南有同样的问题 . 从机复制得很好,但主机无法正确检查从机状态,因为连接来自点零ip .

    Proto Recv-Q Send-Q Local Address           Foreign Address         State
    

    从主透视图显示slave-> master连接示例(显示从站的错误IP):

    tcp   0      0 redis-master:6379       10.1.37.0:51674         ESTABLISHED
    

    示例slave->从slave透视的主连接(显示master的右侧ip):

    tcp   0      0 redis-03fdy:51674       10.1.90.2:6379          ESTABLISHED
    

    以下是ps的redis服务器命令 .

    主:

    root   12  0.1  0.2  26876  2352 ?   Sl   10:42   0:02 redis-server 10.1.90.2:6379
    

    奴隶:

    root   18  0.1  0.2  26876  2300 ?   Sl   10:48   0:00 redis-server 10.1.37.3:6379
    
  • 2

    我们设法通过在我们的redis pod中设置 hostNetworking: true 来解决这个问题 . 这意味着redis服务器不会获得容器IP(172 ..),这绝对可以解决问题 .

相关问题