2016-04-20 6 views
0

Ich benutze Kubernetes 1.2 Beispiel, um 2 Cassandra-Knoten zum Testen zu betreiben. https://github.com/kubernetes/kubernetes/blob/release-1.2/examples/cassandra/README.mdCassandra - Kubernetes Wie pod ip beim Neustart zu halten

Ich benutze Daemonset, um einen Cassandra-Knoten von Kubernetes-Knoten zu haben. Alles funktioniert gut, bis ein Cassandra-Knoten neu gestartet wird. IP-Adresse des POD Änderungen und nodetools Status kehrt Knoten AB

> kubectl exec -it cassandra-lnzhj -- nodetool status fruition 
Datacenter: datacenter1 
======================= 
Status=Up/Down 
|/ State=Normal/Leaving/Joining/Moving 
-- Address  Load  Tokens Owns (effective) Host ID         Rack  
UN 10.216.1.4 25.22 MB 256  39.6%    786aede9-ec4f-4942-b52a-135bc3cd68ce rack1 
UN 10.216.0.3 2.11 MB 256  40.1%    457f7322-131a-4499-b677-4d50691207ba rack1 
DN 10.216.0.2 377.41 KB 256  38.8%    aa2ca115-e8ea-4c62-8d57-bfc5b3fabade rack1 

Dann, wenn ich versuche, ein einfaches zu senden „aus der Tabelle * wählen;“ auf einem Schlüsselraum mit einem Replikationsfaktor von 2, habe ich diesen Fehler:

Traceback (most recent call last): 
File "/usr/bin/cqlsh", line 1093, in perform_simple_statement rows = self.session.execute(statement, trace=self.tracing_enabled) 
File "/usr/share/cassandra/lib/cassandra-driver-internal-only-2.7.2.zip/cassandra-driver-2.7.2/cassandra/cluster.py", line 1602, in execute result = future.result() 
File "/usr/share/cassandra/lib/cassandra-driver-internal-only-2.7.2.zip/cassandra-driver-2.7.2/cassandra/cluster.py", line 3347, in result raise self._final_exception 
Unavailable: code=1000 [Unavailable exception] message="Cannot achieve consistency level ONE" info={'required_replicas': 1, 'alive_replicas': 0, 'consistency': 'ONE'} 

Wie POD IP-Adresse halten, um nicht nach unten Knoten zu haben, wenn Kubernetes es neu starten? Gibt es einen besseren Weg, es mit Cassandra-Konfiguration zu tun?

Antwort

2

Das kann man mit aktuellen Kubernetes nicht erreichen. Sie benötigen die Implementierung von PetSets fällig in v1.3.

+0

Es tut uns leid, diese alte Frage erneut zu stellen, aber ist es nicht möglich, die gleiche IP für einen Container mit StatefulSets zu behalten? –

+1

StatefulSets sind der definitive Name für PetSets. – EricM

0

Leider lösen auch PetSets oder Stateful Sets, wie sie jetzt in Kubernetes 1.5 genannt werden, dieses Problem nicht. Mit der neuen Funktion können Sie denselben Hostnamen beibehalten, aber es gibt keine Garantie, dass die IP-Adresse gleich bleibt. Zitiert aus ihrer Dokumentation:

The Pods’ ordinals, hostnames, SRV records, and A record names have not changed, but the IP addresses associated with the Pods may have changed. In the cluster used for this tutorial, they have. This is why it is important not to configure other applications to connect to Pods in a StatefulSet by IP address.

Wenn Sie nicht an Kubernetes gebunden sind und die Flexibilität bei der Wahl zu anderen Lösungen, check this out.

Sie bieten eine Container-basierte Lösung, die Computing, Netzwerk, Speicher kombiniert, so dass Sie die volle Kontrolle über alle von Cassandra benötigten Ressourcen haben und Snapshot/Restore, Scale-Out, Scale-Up/Down, Failover usw. durchführen können Sie garantieren, dass die gleiche IP-Adresse und die gleichen Volumina für einen Container während seiner gesamten Lebensdauer beibehalten werden.

Verwandte Themen