2016-05-11 5 views
1

Ich versuche, einen Kassandra-Cluster in Kubernetes zu erstellen. Ich möchte awsElasticBlockStore verwenden, um die Daten persistent zu machen. Als Ergebnis habe ich wie folgt für die entsprechenden Replication-Controller eine YAML-Datei geschrieben:Kubernetes: Wie kann ich die Anzahl der Replikate mit awsElasticBlockStore auf mehr als 1 setzen?

apiVersion: v1 
kind: ReplicationController 
metadata: 
    name: cassandra-rc 
spec: 
    # Question: How can I do this? 
    replicas: 2 
    selector: 
    name: cassandra 
    template: 
    metadata: 
     labels: 
     name: cassandra 
    spec: 
     containers: 
     - resources: 
      limits : 
       cpu: 1.0 
      image: cassandra:2.2.6 
      name: cassandra 
      ports: 
      - containerPort: 7000 
       name: comm 
      - containerPort: 9042 
       name: cql 
      - containerPort: 9160 
       name: thrift 
      volumeMounts: 
      - name: cassandra-persistent-storage 
       mountPath: /cassandra_data 
     volumes: 
     - name: cassandra-persistent-storage 
      awsElasticBlockStore: 
      volumeID: aws://ap-northeast-1c/vol-xxxxxxxx 
      fsType: ext4 

jedoch nur eine Hülse mit dieser Konfiguration ordnungsgemäß gestartet werden kann.

$ kubectl get pods 
NAME     READY  STATUS    RESTARTS AGE 
cassandra-rc-xxxxx 0/1  ContainerCreating 0   5m 
cassandra-rc-yyyyy 1/1  Running    0   5m 

Wenn ich $ kubectl describe pod cassandra-rc-xxxxx laufen, sehe ich einen Fehler wie den folgenden:

Fehler pod synchronisiert werden, das Überspringen: Konnte nicht EBS Disk „aws anhängen: // ap-Nordost-1c/vol-xxxxxxxx „: Fehler Anbringen EBS Volumen: VolumeInUse: vol-xxxxxxxx ist bereits auf eine Instanz befestigt

Es ist verständlich, weil ein ELB Volumen von nur einem Knoten befestigt werden kann. Daher kann nur ein Pod den Datenträger erfolgreich mounten und booten, während andere einfach fehlschlagen.

Gibt es dafür eine gute Lösung? Muss ich mehrere Replikations-Controller für jeden Pod erstellen?

Antwort

0

Sie haben Recht, ein EBS-Volume kann nur zu einem bestimmten Zeitpunkt auf einem einzelnen EC2-Gerät installiert werden. Zur Lösung Sie haben folgende Möglichkeiten:

+0

Danke! Ich habe tatsächlich mehrere Replikations-Controller für diese Einschränkung erstellt und sie funktionieren bisher gut. – aeas44

Verwandte Themen