我使用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