2017-01-01 2 views
0

Ich versuche docker und kubernetes zu lernen, und eines der Dinge, die ich versuche, ist, Redis mit Sentinel einzurichten und Redis wieder auf Dinge außerhalb des Containers zu setzen.Kubernetes Redis HA und Freilegen von Objekten außerhalb des Containers

Erster redis und Sentinel-Setup war ziemlich einfach folgend https://github.com/kubernetes/kubernetes/tree/master/examples/storage/redis

Aber jetzt mein nächster Wunsch ist außerhalb des Behälters auf Zugang redis zu können und ich kann nicht herausfinden, die Sentinel und das Master-Pod zu belichten.

Antwort

1

Die Datei redis sentinel service von Ihrem Link (https://github.com/kubernetes/kubernetes/blob/master/examples/storage/redis/redis-sentinel-service.yaml) wird die Pods innerhalb des Clusters freilegen. Für den externen Zugriff (von außerhalb des Clusters) können Sie eine NodePort verwenden:

apiVersion: v1 
kind: Service 
metadata: 
    labels: 
    name: sentinel 
    role: service 
    name: redis-sentinel 
spec: 
    type: NodePort 
    ports: 
    - port: 26379 
     targetPort: 26379 
     nodePort: 30369 
    selector: 
    redis-sentinel: "true" 

Dies würde den Port 30369 auf allen Ihren Rechner von der Außenwelt auf die redis Sentinel-Service aus.

Mehrere Bemerkungen dazu: * Firewall: Sicherheit in redis ist begrenzt, also unerwünschte Zugriffe verhindern, bevor der Anschluss * Die erlaubte Öffnung mit dieser Einschränkung werden zugewiesen nodePort Bereich von 30.000 bis 32.767, so kreativ sein .

+0

Norbert Danke für die Antwort. Meine nächste Frage gilt möglicherweise nicht für redis Sentinel, aber ich glaube, dass es tut. Wird die IP-Adresse des Pods nicht zurückgegeben, wenn etwas geändert werden soll? Ich bemerkte dies bei dem Versuch, redis Cluster zu setzen und jeden Pod mit einem Dienst zu entlarven, dass es die Pod IP anstelle der Service-IP zurückgeben würde macht es unmöglich/schwierig/über mein Wissen mit kubernetes zu verwenden. Gibt es einen Weg, um es auch für diese Situation funktionieren zu lassen? (Denken über Redis-Cluster und Dinge wie Cassandra oder Kafka) Dies kann eine separate Frage – Josh

+1

Ich tatsächlich Redis in Kubernetes ohne Sentinel ausführen: Wenn Redis als Prozess 1 im Container ausgeführt wird (was ist, wenn Sie diese Container verwenden) , kubernetes macht die Arbeit von Sentinel (IMHO) für Sie bereits. –

Verwandte Themen