Découvrez tout ce que vous devez savoir sur les classes de stockage dans Kubernetes grâce à ce guide détaillé rédigé par un développeur DevOps expérimenté. Ce PDF vous fournira une compréhension approfondie du concept de classe de stockage, du provisionnement de volumes dynamiques et persistants, ainsi que des différents fournisseurs de stockage pris en charge. Que vous soyez débutant ou déjà familier avec Kubernetes, ce guide vous aidera à maîtriser efficacement les classes de stockage et à optimiser vos déploiements.
4. I. Prérequis
Pour comprendre le concept de classe de stockage dans Kubernetes,
nous devons d'abord comprendre le concept de volume dans
Kubernetes. En termes simples, le volume Kubernetes est un
répertoire dans lequel nos données sont stockées ; les conteneurs à
l'intérieur des pods dans Kubernetes utilisent ce volume pour
conserver leurs données ; Kubernetes prend en charge de nombreux
types de volumes tels que le volume persistant, le volume éphémère
et le volume projeté.
5. I. Prérequis
Ici, le concept de classe de stockage concernera le type de volume
persistant, dont nous discuterons dans ce document. En volume de
persistance, nous avons deux choses à discuter avant de passer à la
classe de stockage, c'est-à-dire deux API fournies par Kubernetes
PersistentVolumeClaim et PersistenceVolume ; la raison pour laquelle
nous fournissons deux API au lieu de provisionner directement le
stockage sur le pod est de masquer certaines informations telles que
l'endroit où le stockage a été fourni et où il est utilisé.
6. I. Prérequis
PersistentVolume est soit créé par l'administrateur, soit provisionné
dynamiquement à l'aide de la classe Storage ; cette ressource est
disponible au niveau du cluster, tout comme le nœud et toute autre
ressource disponible au niveau du cluster.
PersistentVolumeClaim est la ressource à partir de laquelle nous
demandons le stockage. PersistenVolumeClaim utilise
PersistencVolume tout comme le pod utilise les ressources de nœud.
PersistentVolumeClaim permet aux utilisateurs d'utiliser le stockage
abstrait fourni par l'administrateur sous la forme de
PersistentVolume.
8. II. Qu’est-ce que la classe storage dans Kubernetes ?
La classe de stockage correspond aux ressources Kubernetes à partir
desquelles nous obtenons un provisionnement de volume
dynamique et persistant. Le concept de classe de stockage dans
Kubernetes permet à l'utilisateur (administrateur) de fournir le type
de stockage qu'il souhaite offrir. Pour faire tout cela, l'administrateur
doit créer la classe.
Chaque StorageClass contient les champs provisioner, parameters et
reclaimPolicy, qui sont utilisés lorsqu'un PersistentVolume
appartenant à la classe doit être provisionné dynamiquement.
9. II. Qu’est-ce que la classe storage dans Kubernetes ?
Le nom d'un objet StorageClass est significatif et constitue la
manière dont les utilisateurs peuvent demander une classe
particulière. Les administrateurs définissent le nom et d'autres
paramètres d'une classe lors de la première création d'objets
StorageClass.
Lorsqu'un PVC ne spécifie pas de storageClassName, la StorageClass
par défaut est utilisée. Le cluster ne peut avoir qu'une seule
StorageClass par défaut. Si plusieurs StorageClass par défaut sont
définis accidentellement, la valeur par défaut la plus récente est
utilisée lorsque le PVC est provisionné dynamiquement.
10. II. Qu’est-ce que la classe storage dans Kubernetes ?
Provisioners: détermine quel plug-in de
volume est utilisé pour provisionner les PV. Ce
champ doit être précisé.
reclaimPolicy: peut être Delete ou Retain. Si
no reclaimPolicyest spécifié lors de la création
d’un objet StorageClass, il sera par défaut Delete.
allowVolumeExpansion: Les
PersistentVolumes peuvent être configurés pour
être extensibles. Cette fonctionnalité, lorsqu'elle
est définie sur true, permet aux utilisateurs de
redimensionner le volume en éditant l'objet PVC
correspondant.
11. II. Qu’est-ce que la classe storage dans Kubernetes ?
mountOptions: Les PersistentVolumes
créés dynamiquement par une StorageClass
auront les options de montage spécifiées dans
le champ mountOptions de la classe.
volumeBindingMode: Le champ
volumeBindingMode contrôle le
moment où la liaison de volume et
le provisionnement dynamique
doivent se produire. Lorsqu'il n'est
pas défini, le mode "Immédiat" est
utilisé par défaut.
12. II. Qu’est-ce que la classe storage dans Kubernetes ?
Parameters: Les classes de stockage ont
des paramètres qui décrivent les volumes
appartenant à la classe de stockage. Différents
paramètres peuvent être acceptés en fonction
du provisioner. Par exemple, la valeur io1 du
paramètre type et le paramètre iopsPerGB
sont spécifiques à EBS. Lorsqu'un paramètre
est omis, une valeur par défaut est utilisée.
Il peut y avoir au plus 512 paramètres définis
pour une StorageClass. La longueur totale de
l'objet paramètres, y compris ses clés et
valeurs, ne peut pas dépasser 256 Ko.
14. III. Quelques fournisseurs
AWSEBS
● type: io1, gp2, sc1, st1
● fsType: fsType pris en charge par
Kubernetes. Défaut: "ext4".
● encrypted: indique si le volume
EBS doit être chiffré ou non. Les
valeurs valides sont "true"ou
"false".
● iopsPerGB: uniquement pour
io1les volumes. Opérations d'E/S
par seconde et par Gio.
15. III. Quelques fournisseurs
GCE PD
● type: pd-standardou pd-ssd.
Défaut: pd-standard
● fsType: fext4 ou xfs. Défaut: ext4.
Le type de système de fichiers
défini doit être pris en charge
par le système d'exploitation
hôte.
● replication-type: none ou
regional-pd. Défaut: none.
16. III. Quelques fournisseurs
NFS
● server: Server est le nom d'hôte
ou l'adresse IP du serveur NFS.
● path: Chemin exporté par le
serveur NFS.
● readOnly: Un indicateur
indiquant si le stockage sera
monté en lecture seule (false par
défaut).
17. II. Qu’est-ce que la classe storage dans Kubernetes ?
Le nom d'un objet StorageClass est significatif et constitue la
manière dont les utilisateurs peuvent demander une classe
particulière. Les administrateurs définissent le nom et d'autres
paramètres d'une classe lors de la première création d'objets
StorageClass.
Lorsqu'un PVC ne spécifie pas de storageClassName, la StorageClass
par défaut est utilisée. Le cluster ne peut avoir qu'une seule
StorageClass par défaut. Si plusieurs StorageClass par défaut sont
définis accidentellement, la valeur par défaut la plus récente est
utilisée lorsque le PVC est provisionné dynamiquement.