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 | ||