====== Kubernetes - Stockage ====== ===== Créer un volume Persistant ===== Sur le node créer le répertoire pour y stocker des données : mkdir /mnt/data Sur le master créer le fichier manisfeste : vim create_PersistentVol.yml Insérer le contenu suivant : apiVersion: v1 kind: PersistentVolume metadata: name: pv-volume-01 labels: type: local spec: #storageClassName: manual capacity: storage: 1Gi accessModes: - ReadWriteOnce hostPath: path: "/mnt/data" Explication : * **metadata.name** : Définir nom du volume. * **metadata.labels.type**: Indiquer le type de stockage Ici on utilise le disque local du node. * **spec.capacity.storage**: Indiquer la capacité allouée. * **spec.capacity.accessModes**: Indiquer si l'accès est lecture seule ou écriture. * **spec.capacity.hostPath**: Indiquer le chemin d'accès au données sur le node. Appliquer le manifeste : kubectl apply -f create_PersistentVol.yml Pour lister les volumes Persistants : kubectl get persistentvolumes kubectl get pv ===== Créer une réclamation de volume Persistant ===== Un pod ne peut pas utiliser directement un volume. Il faut créer un objet de réclamation de volume en lien avec le volume pour qu'il puisse être utilisé par un POD. Créer le fichier manisfeste suivant : vim create_PersistentVolClaim.yml Insérer le contenu suivant : apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pv-claim-01 spec: #storageClassName: manual accessModes: - ReadWriteOnce resources: requests: storage: 500Mi volumeName: pv-volume-01 Explication : * **metadata.name**: Nom de l'objet. * **spec.accessModes**: Indiquer si la réclamation peut se faire en lecture ou en écriture. * **spec.resources.requests.storage**: Indiquer l'espace qui doit être réclamé. * **spec.volumeName**: Indiquer le nom du volume à utiliser pour la réclamation. Appliquer le manifeste : kubectl apply -f create_PersistentVolClaim.yml Pour lister les réclamation de volumes Persistants : kubectl get persistentvolumeClaims kubectl get pvc ===== Lancer un POD qui réclame le volume ===== Créer le fichier Manisteste : vim vim create_pods_persistantVol.yml Insérer les contenu suivant : apiVersion: v1 kind: Pod metadata: name: mydeb-pod spec: nodeName: k8s-node volumes: - name: pv-storage-01 persistentVolumeClaim: claimName: pv-claim-01 containers: - name: mydeb image: debian command: ["sleep"] args: ["infinity"] ports: - containerPort: 80 volumeMounts: - mountPath: "/var/www/html" name: pv-storage-01 Explication : * **spec.nodeName**: Si les données sont sur un node spécifique, on peut indiquer ici le node sur lequel sera affecté le pod. * **spec.volumes.name** : Définir un nom stockage qui servira de référence pour assigner le volume aux conteneurs. * **spec.volumes.persistentVolumeClaim.claimName**: Indiquer le nom de la réclamation de volume. Créé plus haut. * **spec.containers.volumeMounts.mountPath**: Indiquer le point de montage du volume dans le conteneur. * **spec.containers.volumeMounts.name**: Indiquer le nom du stockage à utiliser. Doit correspondre avec **spec.volumes.name** Appliquer le manifeste : kubectl apply -f create_pods_persistantVol.yml