2016-05-10 4 views
3

J'utilise l'exemple K8s pour créer un Redis fiable et évolutif sur les Kubernetes. Le maître Redis a besoin d'obtenir l'adresse IP d'origine et de s'enregistrer sur la sentinelle. Sentinel utilisera pour changer de maître lorsque le maître a échoué.Créer un cluster redis sentinel dans Kubernetes, le maître redis ne peut pas obtenir l'origine de l'esclave IP

Mais mon docker démarre sans le drapeau iptables = false (Il créera un iptables comme SNAT), donc l'IP de la source esclave redis sera SNAT, et le maître recevra l'adresse IP de flannel0 comme 172.16.103.0.

J'ajoute également le réseau de flanelle à la connexion de conteneur entre les noeuds. Donc, la question est "Est-il possible d'obtenir l'adresse IP source sans supprimer le drapeau iptables, ou d'une autre manière de créer un cluster redis fiable."

Répondre

2

EDIT: J'ai trouvé la combinaison magique de drapeaux pour que cela fonctionne.

1) course arrêt docker & docker bootstrap traite

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

2) Supprimer les règles iptables:

iptables -F && iptables -t nat -F 

3) exécuter votre docker-démon avec l'option ip-masq = false
4) exécutez votre flanneld avec l'option ip-masq = true

Pour moi, cela fait tous les trois pod-> pod, pod-> ext, & ext-> service-> pod fonctionne parfaitement.

J'espère que cela fonctionne pour vous!


(préservation réponse initiale qui décrit les symptômes)

je suis le même problème avec le guide. L'esclave se réplique correctement, mais le maître ne peut pas vérifier correctement l'état de l'esclave, car la connexion provient du point zéro ip.

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

Exemple de> connexion maître du point de vue du maître (montre mauvais IP esclave):

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

Exemple négrier> Connexion maître du point de vue esclave (montre ip droite du maître):

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

Voici les commandes du serveur redis de ps.

maître:

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

esclave:

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

nous voyons la même chose, avez-vous fait des progrès? –

+0

https://github.com/antirez/redis/issues/2527 –

+0

@AndySmith oui, s'il vous plaît voir ma réponse ajustée :) P.S. assurez-vous que flannel ip-masq est en cours d'exécution sur tous les noeuds – ssjcory

0

Nous avons réussi à contourner ce problème en fixant hostNetworking: true dans nos gousses de redis. Cela signifie que les serveurs redis n'obtiennent pas d'adresses IP de conteneur (172 ..) et résolvent définitivement le problème, mais résolvent le problème.

+0

Je le répare de cette façon. Merci beaucoup. – zhulinhong