2016-05-11 4 views
1

J'essaie de créer un cluster Cassandra dans Kubernetes. Je veux utiliser awsElasticBlockStore pour rendre les données persistantes. En conséquence, j'ai écrit un fichier YAML comme suit pour le contrôleur de réplication correspondant:Kubernetes: Comment définir le nombre de réplicas supérieur à 1 en utilisant awsElasticBlockStore?

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 

Cependant, un seul pod peut être correctement lancé avec cette configuration.

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

Quand je lance $ kubectl describe pod cassandra-rc-xxxxx, je vois une erreur comme suit:

erreur pod synchronisation, sauter: impossible d'attacher EBS disque « aws: // ap-nord-1c/vol-xxxxxxxx « : erreur de fixation volume EBS: VolumeInUse: vol-xxxxxxxx est déjà associé à une instance

Il est compréhensible en raison d'un volume ELB peut être monté d'un seul noeud. Ainsi, un seul pod peut monter le volume et le démarrage avec succès, tandis que d'autres échouent tout simplement.

Y at-il une bonne solution pour cela? Ai-je besoin de créer plusieurs contrôleurs de réplication pour chaque pod?

Répondre

0

Vous avez raison, un volume EBS ne peut être monté que sur un seul EC2 à un moment donné. Pour vous résoudre les options suivantes:

+0

Merci! J'ai effectivement créé plusieurs contrôleurs de réplication pour cette restriction et ils fonctionnent bien jusqu'à présent. – aeas44