Я пытаюсь создать кластер 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 может быть установлена только с одного узла. Таким образом, только один блок может успешно смонтировать том и загрузку, в то время как другие просто терпят неудачу.
Есть ли хорошее решение для этого? Нужно ли мне создавать несколько контроллеров репликации для каждого модуля?
Спасибо! Я на самом деле создал несколько контроллеров репликации для этого ограничения, и пока они работают хорошо. – aeas44