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

我使用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集群.”

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

1)run stop 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->主站角度的主站连接(显示从站的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
点赞