Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
informatique:kebernetes:kube_storage [2023/12/11 14:02] benoit créée |
informatique:kebernetes:kube_storage [2023/12/13 09:14] (Version actuelle) benoit [Lancer un POD qui réclame le volume] |
||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
+ | ===== 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 |