Définir la ressource StorageClass par défaut

Un cluster d'utilisateur comporte un ou plusieurs objets StorageClass, et l'un d'entre eux est désigné comme StorageClass par défaut. Cette page explique comment définir la StorageClass par défaut pour un cluster d'utilisateur.

Pour en savoir plus, consultez la page Stockage.

Rechercher la StorageClass par défaut

Répertoriez toutes les ressources StorageClass:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get storageclasses

Le résultat indique la StorageClass utilisée par défaut. Par exemple, dans la sortie suivante, vous pouvez voir qu'une StorageClass nommée standard-rwo est la StorageClass par défaut:

standard                      kubernetes.io/vsphere-volume
standard-rwo (default)        csi.vsphere.vmware.com

Lorsque vous demandez un espace de stockage, vous pouvez spécifier une ressource StorageClass. Si vous ne la définissez pas, la ressource StorageClass par défaut est utilisée. Par exemple, supposons que vous créiez un objet PersistentVolumeClaim qui ne spécifie pas de StorageClass. Le contrôleur de volume traite la revendication en fonction de la ressource StorageClass par défaut.

Modifier la ressource StorageClass par défaut

En tant qu'administrateur de cluster, vous souhaiterez peut-être modifier la classe de stockage par défaut. Ainsi, toutes les requêtes de stockage qui ne spécifient pas de StorageClass seront traitées en fonction de la ressource StorageClass de votre choix. Cette section décrit la procédure à suivre pour modifier la valeur par défaut.

Déployer un nouveau système de stockage

Vous pouvez déployer un nouveau système de stockage et tous les composants logiciels permettant d'intégrer le nouveau mécanisme de stockage à un cluster Kubernetes. Par exemple, vous devrez peut-être installer un pilote CSI dans le cluster.

Cette étape dépend de votre fournisseur de stockage. Les fournisseurs doivent communiquer des instructions concernant le déploiement de leur pilote CSI sur un cluster Kubernetes. La documentation d'un pilote CSI doit également inclure les paramètres spécifiques au pilote que vous fournissez dans votre StorageClass, y compris le nom de l'approvisionneur.

Lorsque vous créez une ressource StorageClass pour votre nouveau système, vous devez lui attribuer un nom en fonction de ses propriétés (telles que "rapide" ou "hautement répliquée"), plutôt qu'en fonction du nom du pilote ou du système spécifique sous-jacent. Il sera alors plus facile d'assurer la cohérence des règles de stockage entre les clusters et les environnements.

Supprimer l'annotation par défaut de la StorageClass par défaut

Ouvrez la StorageClass par défaut dans un éditeur de texte:

kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] edit storageclass \
    DEFAULT_STORAGE_CLASS

Dans l'éditeur de texte, supprimez l'annotation storageclass.kubernetes.io/is-default-class: "true". Fermez l'éditeur de texte.

Pour vérifier que l'annotation a été supprimée, saisissez la commande suivante :

kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] get storageclass \
    DEFAULT_STORAGE_CLASS --output yaml

Créer une StorageClass

Créez un fichier manifeste pour une nouvelle ressource StorageClass. Incluez l'annotation storageclass.kubernetes.io/is-default-class: "true". Exemple :

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
  ...
  name: my-storage-class
  ...
parameters:
  ...
provisioner: [MY_PROVISIONER]
...

Enregistrez votre fichier manifeste sous forme de fichier YAML, puis créez la ressource StorageClass :

kubectl --kubeconfig [CLUSTER_KUBECONFIG] apply -f [MANIFEST_FILE]

[MANIFEST_FILE] est le chemin d'accès au fichier manifeste de votre nouvelle ressource StorageClass.

Étapes suivantes