Как создать постоянное утверждение тома с помощью ReadWriteMany в GKE? - PullRequest
0 голосов
/ 21 февраля 2019

Каков наилучший способ создать постоянную заявку на том, когда ReadWriteMany подключит том к нескольким модулям?

На основе таблицы поддержки в https://kubernetes.io/docs/concepts/storage/persistent-volumes, GCEPersistentDisk изначально не поддерживает ReadWriteMany.

Каков наилучший подход при работе в мире GCP GKE?Должен ли я использовать кластерную файловую систему, такую ​​как CephFS или Glusterfs?Есть ли рекомендации по поводу того, что я должен использовать, чтобы производство было готово?

Мне удалось настроить развертывание модуля NFS, выполнив следующие действия: https://medium.com/platformer-blog/nfs-persistent-volumes-with-kubernetes-a-case-study-ce1ed6e2c266 однако это выглядит немного странно и добавляет еще один уровень сложности.Кажется также, что разрешена только одна реплика (что имеет смысл, поскольку диск не может быть смонтирован несколько раз), поэтому, если / когда модуль выйдет из строя, мое постоянное хранилище также будет.

Ответы [ 2 ]

0 голосов
/ 19 августа 2019

Теперь это возможно с Cloud Filestore .

Сначала создайте экземпляр хранилища файлов.

gcloud filestore instances create nfs-server
    --project=[PROJECT_ID]
    --zone=us-central1-c
    --tier=STANDARD
    --file-share=name="vol1",capacity=1TB
    --network=name="default",reserved-ip-range="10.0.0.0/29"

Затем создайте постоянный том в GKE.

apiVersion: v1
kind: PersistentVolume
metadata:
  name: fileserver
spec:
  capacity:
    storage: 1T
  accessModes:
  - ReadWriteMany
  nfs:
    path: /vol1
    server: [IP_ADDRESS]

[IP_ADDRESS] доступно в подробностях экземпляра хранилища файлов.

Теперь вы можете запросить постоянное требование объема.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: fileserver-claim
spec:
  accessModes:
  - ReadWriteMany
  storageClassName: "fileserver"
  resources:
    requests:
      storage: 100G

Наконец, смонтируйте том в своем модуле.

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my container
    image: nginx:latest
    volumeMounts:
    - mountPath: /workdir
      name: mypvc
  volumes:
  - name: mypvc
    persistentVolumeClaim:
      claimName: fileserver-claim
      readOnly: false

Решение подробно описано здесь: https://cloud.google.com/filestore/docs/accessing-fileshares

0 голосов
/ 21 февраля 2019

Я согласен, что это разочаровывает, но это является следствием использования постоянного диска, который не позволяет подключать к нескольким экземплярам чтение-запись.

Я добился успеха с NFS и с описанными ограничениями.

Вы можете - как вы заявляете - использовать Gluster или аналогичный.

Более дорогой, хотя и управляемый, альтернатива Google Cloud - Cloud Filestore: https://cloud.google.com/filestore/docs/accessing-fileshares

Ваши вопросыпредполагает, что вам нужна NFS-подобная семантика, но если вы этого не сделаете, вы можете рассмотреть возможность использования Google Cloud Storage.

...