web-dev-qa-db-fra.com

PVC Kubernetes avec ReadWriteMany sur AWS

Je veux configurer un PVC sur AWS, où j'ai besoin de ReadWriteMany comme mode d'accès. Malheureusement, EBS ne prend en charge que ReadWriteOnce.

Comment pourrais-je résoudre ce problème?

  • J'ai vu qu'il existe un fournisseur bêta pour AWS EFS qui prend en charge ReadWriteMany, mais comme dit, il s'agit toujours de la version bêta, et son installation semble quelque peu floconneuse.
  • Je pourrais utiliser l'affinité de nœud pour forcer tous les pods qui dépendent du volume EBS à un seul nœud, et rester avec ReadWriteOnce, mais cela limite l'évolutivité.

Existe-t-il d'autres moyens de résoudre ce problème? Fondamentalement, j'ai besoin d'un moyen de stocker des données de manière persistante pour les partager entre des pods indépendants les uns des autres.

11
Golo Roden

Utilisation d'EFS sans provisioning automatique

Le provisionneur EFS peut être bêta, mais EFS lui-même ne l'est pas. Étant donné que les volumes EFS peuvent être montés via NFS, vous pouvez simplement créer un PersistentVolume avec une source de volume NFS manuellement - en supposant que l'approvisionnement automatique n'est pas une exigence difficile de votre côté:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: my-efs-volume
spec:
  capacity:
    storage: 100Gi # Doesn't really matter, as EFS does not enforce it anyway
  volumeMode: Filesystem
  accessModes:
    - ReadWriteMany
  mountOptions:
    - hard
    - nfsvers=4.1
    - rsize=1048576
    - wsize=1048576
    - timeo=600
    - retrans=2
  nfs:
    path: /
    server: fs-XXXXXXXX.efs.eu-central-1.amazonaws.com

Vous pouvez ensuite réclamer ce volume à l'aide d'un PersistentVolumeClaim et l'utiliser comme d'habitude dans un pod (ou plusieurs pods).

Solutions alternatives

Si l'approvisionnement automatique est une exigence difficile pour vous, vous pouvez envisager d'autres solutions: il existe plusieurs systèmes de fichiers distribués que vous pouvez déployer sur votre cluster qui offrent un stockage ReadWriteMany au-dessus de Kubernetes et/ou AWS. Par exemple, vous pouvez jeter un œil à Rook (qui est essentiellement un opérateur Kubernetes pour Ceph). Il est également officiellement encore en phase de pré-sortie, mais j'ai déjà travaillé un peu avec et il fonctionne assez bien. Il y a aussi opérateur GlusterFS , qui semble déjà avoir quelques versions stables.

10
helmbert

Comme vous mentionnez le volume EBS avec affinity & node selector arrêtera l'évolutivité mais avec EBS seul ReadWriteOnce fonctionnera.

Si je partage mon expérience, si vous effectuez de nombreuses opérations sur le système de fichiers et que vous poussez et récupérez fréquemment des fichiers, cela peut être lent avec EFS, ce qui peut dégrader les performances des applications. le taux de fonctionnement sur EFS est lent.

Cependant, vous pouvez utiliser GlusterFs à l'arrière, il provisionnera le volume EBS. GlusterFS prend également en charge ReadWriteMany et ce sera plus rapide par rapport à EFS car il s'agit du stockage en bloc (SSD).

0
Harsh Manvar