Utiliser des disques persistants préexistants en tant que ressources PersistentVolume

Cette page explique comment créer un objet PersistentVolume à l'aide d'un disque persistant Compute Engine existant contenant des données et l'utiliser ensuite dans un pod.

Créer un objet PersistentVolume

Si vous possédez déjà un disque persistant de 500 Go nommé pd-name, le fichier manifeste ci-dessous décrit un objet PersistentVolume et un objet PersistentVolumeClaim correspondants.

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-demo
spec:
  storageClassName: ""
  capacity:
    storage: 500G
  accessModes:
    - ReadWriteOnce
  gcePersistentDisk:
    pdName: pd-name
    fsType: ext4
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv-claim-demo
spec:
  # It's necessary to specify "" as the storageClassName
  # so that the default storage class won't be used, see
  # https://kubernetes.io/docs/concepts/storage/persistent-volumes/#class-1
  storageClassName: ""
  volumeName: pv-demo
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 500G

Utilisez kubectl apply -f existing-pd.yaml pour créer des objets PersistentVolume et PersistentVolumeClaim.

Utiliser l'objet PersistentVolume dans un pod

Une fois que les objets PersistentVolume et PersistentVolumeClaim sont présents dans le cluster, vous pouvez autoriser les conteneurs d'un pod à accéder au volume en spécifiant les valeurs de conteneur volumeMounts.mountPath et volumeMounts.name, comme illustré dans l'exemple suivant :

kind: Pod
apiVersion: v1
metadata:
  name: task-pv-pod
spec:
  volumes:
    - name: task-pv-storage
      persistentVolumeClaim:
       claimName: pv-claim-demo
  containers:
    - name: task-pv-container
      image: nginx
      ports:
        - containerPort: 80
          name: "http-server"
      volumeMounts:
        - mountPath: "/usr/share/nginx/html"
          name: task-pv-storage

Lorsque vous appliquez ce fichier manifeste à un cluster, le pod est créé et le conteneur task-pv-container a accès au volume dans son répertoire /usr/share/nginx/html/.