2 votes

Les données du conteneur dans le volume persistant sont réclamées lorsque le POD se plante.

Je veux créer un contrôleur de réplication avec un POD qui aura un PVC (persistent volume claim). Mon PVC utilisera un stockage NFS pour le PV (Persistent Volume).

Une fois que le POD est opérationnel, le CR maintiendra les POD en état de marche. Dans cette situation, les données contenues dans le POD seront-elles disponibles / persistantes lorsque

  1. le POD est arrêté/supprimé par une commande de suppression et RC le relance ? Cela signifie que Kubernetes n'a pas été arrêté. Dans ce cas, le nouveau POD peut-il avoir les mêmes données provenant du même volume ?
  2. le POD a été arrêté, le processus Kubernetes et les nœuds ont été redémarrés. Le stockage NFS était cependant toujours attaché en tant que PV.
  3. Un nouveau PV est attaché à Kubernetes et l'ancien PV est détaché.

2voto

Cela dépend beaucoup de la façon dont vous définissez votre PV/PVC. D'après mon expérience, il est assez facile d'utiliser un PV basé sur NFS pour conserver les données entre les recréations et les suppressions de pods. J'adopte l'approche suivante pour les volumes NFS partagés par plusieurs pods.

Volume :

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pvname
spec:
  capacity:
    storage: 1Mi
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  nfs:
    server: <nfs IP>
    path: <nfs path>

Revendication :

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvcname
spec:
  volumeName: pvname
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 1Mi

Cela m'a permis de m'assurer que, quoi que je supprime dans k8s, je peux retrouver mes données sur un chemin connu sur le serveur NFS et les réutiliser en recréant PV/PVC/POD sur k8s, ce qui devrait permettre de survivre aux trois cas que vous avez mentionnés.

1voto

yomateo Points 340

En fonction de votre fournisseur/prestataire, le persistentVolumeReclaimPolicy: Retain n'est pas nécessairement un processus "revenez me chercher". Selon la documentation de Kubernetes, cette politique est conçue pour empêcher la suppression du volume afin que vous puissiez récupérer vos données (en dehors de Kubernetes) ultérieurement.

Voici à quoi cela ressemble avec cette politique en jeu :

$ kubectl get pvc,pv

NAME                                          STATUS    VOLUME                  CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/nfs-server              Bound     nfs-server              100Gi      RWX                           5d
persistentvolumeclaim/nfs-server-wp-k8specs   Bound     nfs-server-wp-k8specs   100Gi      RWX                           2d

NAME                                     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS    CLAIM                           STORAGECLASS   REASON    AGE
persistentvolume/nfs-server              100Gi      RWX            Retain           Bound     default/nfs-server                                       5d
persistentvolume/nfs-server-wp-k8specs   100Gi      RWX            Retain           Bound     default/nfs-server-wp-k8specs                            2d

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X