2016-05-11 2 views
1

Я пытаюсь создать кластер Cassandra в Кубернете. Я хочу использовать awsElasticBlockStore, чтобы сделать данные постоянными. В результате, я написал файл YAML, как следующие за соответствующие репликации контроллера:Kubernetes: Как установить количество реплик более 1 с помощью 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 

Однако только один стручок может быть правильно запущен с этой конфигурацией.

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

Когда я бегу $ kubectl describe pod cassandra-rc-xxxxx, я вижу ошибку, как следующее:

Ошибка синхронизации стручок, пропуск: Не удалось присоединить EBS диск «AWS: // ар-северо-восток-1c/об-XXXXXXXX ": Ошибка при установке EBS volume: VolumeInUse: vol-xxxxxxxx уже прикреплен к экземпляру

Это понятно, потому что громкость ELB может быть установлена ​​только с одного узла. Таким образом, только один блок может успешно смонтировать том и загрузку, в то время как другие просто терпят неудачу.

Есть ли хорошее решение для этого? Нужно ли мне создавать несколько контроллеров репликации для каждого модуля?

ответ

0

Вы правы, один том EBS может быть установлен только на одном EC2 в заданное время. Для решения у вас есть следующие варианты:

  • Используйте объемы множественной EBS с несколькими контроллерами репликации
  • Использованием распределенной файловой системы (например, Gluster) и избежать EBS проблемы
  • Следуйте вместе с PetSet (https://github.com/kubernetes/kubernetes/issues/260)
+0

Спасибо! Я на самом деле создал несколько контроллеров репликации для этого ограничения, и пока они работают хорошо. – aeas44

Смежные вопросы