Définir la StorageClass par défaut

Cette page explique comment définir la StorageClass par défaut pour un cluster Anthos GKE On-Prem (GKE On-Prem). Consultez également la page Stockage.

Aperçu

GKE On-Prem peut s'intégrer au stockage de blocs ou de fichiers en utilisant l'un des mécanismes suivants :

Lorsque vous créez un cluster, GKE On-Prem crée une StorageClass Kubernetes nommée standard. Il s'agit de la StorageClass par défaut du cluster.

Pour afficher des informations détaillées sur la StorageClass standard, saisissez la commande suivante :

kubectl --kubeconfig [CLUSTER_KUBECONFIG] get storageclass standard --output yaml

[CLUSTER_KUBECONFIG] est le chemin du fichier kubeconfig pour le cluster.

Dans le résultat, vous pouvez voir que le nom de la StorageClass est standard. Vous pouvez également voir l'annotation storageclass.kubernetes.io/is-default-class: "true". Cette annotation identifie la StorageClass nommée standard comme étant la StorageClass par défaut.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
  ...
  name: standard
  ...
parameters:
  datastore: HOST2-DATASTORE2
  diskformat: thin
  fstype: ext4
provisioner: kubernetes.io/vsphere-volume
reclaimPolicy: Delete
volumeBindingMode: Immediate

Votre cluster peut contenir plusieurs objets StorageClass, mais un seul d'entre eux peut avoir l'annotation storageclass.kubernetes.io/is-default-class: "true" et être par conséquent la StorageClass par défaut.

Dans le résultat précédent, vous pouvez également voir que l'approvisionneur est kubernetes.io/vsphere-volume. Il s'agit de l'approvisionneur qui prend les mesures nécessaires lorsqu'un client demande un espace de stockage de la classe standard.

StorageClass par défaut

Lorsque vous demandez de l'espace de stockage, vous pouvez spécifier une ressource StorageClass. Si vous ne spécifiez pas de ressource StorageClass, 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 ressource StorageClass. Le contrôleur de volume répond à la demande conformément à la ressource StorageClass par défaut.

Modifier la 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 demandes de stockage qui ne spécifient pas de StorageClass seront traitées en fonction de la 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

Déployez 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 du fournisseur de stockage que vous utilisez. Pour les pilotes CSI, les fournisseurs doivent fournir des instructions relatives au déploiement de leur pilote CSI sur un cluster Kubernetes. La documentation d'un pilote CSI doit également inclure les paramètres propres à ce pilote que vous fournissez dans votre StorageClass, y compris le nom de l'approvisionneur.

Lorsque vous créez une StorageClass pour votre nouveau système, vous devez nommer la StorageClass en fonction de ses propriétés (telles que "rapide" ou "hautement répliqué"), plutôt que du nom du pilote ou du système spécifique sous-jacent. Cela facilitera la cohérence des règles de stockage entre les clusters et les environnements.

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

Pour ouvrir le fichier manifeste de la StorageClass standard dans un éditeur de texte, entrez la commande suivante :

kubectl --kubeconfig [CLUSTER_KUBECONFIG] edit storageclass standard

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 [CLUSTER_KUBECONFIG] get storageclass standard --output yaml

Créer une StorageClass

Créez un fichier manifeste pour une nouvelle classe 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 en tant que fichier YAML, puis créez la StorageClass :

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

[MANIFEST_FILE] est le chemin d'accès à votre nouveau fichier manifeste StorageClass.

Étapes suivantes