Définir la ressource StorageClass par défaut

10

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

Présentation

Anthos clusters on VMware peut s'intégrer au stockage de blocs ou de fichiers à l'aide de l'un des mécanismes suivants :

Lorsque vous créez un cluster, Anthos clusters on VMware crée une ressource StorageClass Kubernetes nommée standard. Il s'agit de la ressource StorageClass par défaut du cluster.

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

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

[CLUSTER_KUBECONFIG] est le chemin d'accès au fichier kubeconfig du cluster.

Dans le résultat, vous pouvez voir que le nom de la ressource StorageClass est standard. Vous pouvez également voir l'annotation storageclass.kubernetes.io/is-default-class: "true". Cette annotation identifie la ressource StorageClass nommée standard comme étant la ressource 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 comporter l'annotation storageclass.kubernetes.io/is-default-class: "true" et, par conséquent, être la ressource StorageClass par défaut.

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

StorageClass par défaut

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 ressource 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 propres au pilote que vous fournissez dans votre ressource 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 ressource StorageClass standard

Pour ouvrir le fichier manifeste de la ressource StorageClass standard dans un éditeur de texte, saisissez 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 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