Le pilote CSI Filestore est le principal moyen d'utiliser des instances Filestore avec Google Kubernetes Engine (GKE). Le pilote CSI Filestore offre une expérience entièrement gérée grâce au pilote CSI Google Cloud Filestore Open Source.
La version du pilote CSI Filestore est liée aux numéros de version mineures de Kubernetes. La version du pilote CSI Filestore est généralement le dernier pilote disponible au moment de la publication de la version mineure de Kubernetes. Les pilotes sont mis à jour automatiquement lorsque le cluster est mis à niveau afin d'intégrer le dernier correctif GKE.
Avantages
L'utilisation du pilote CSI Filestore offre les avantages suivants :
Vous avez accès à un espace de stockage NFS entièrement géré via les API Kubernetes (
kubectl
).Vous pouvez utiliser le pilote CSI Filestore de GKE pour provisionner de manière dynamique vos PersistentVolumes.
Vous pouvez utiliser des instantanés de volume avec le pilote CSI Filestore GKE. Les instantanés de volume CSI permettent de créer des sauvegardes Filestore.
Une sauvegarde Filestore crée une copie différentielle du partage de fichiers, y compris toutes les données et métadonnées des fichiers, et la stocke séparément de l'instance. Vous ne pouvez restaurer cette copie que sur une nouvelle instance Filestore. Il n'est pas possible d'effectuer une restauration sur une instance Filestore existante. Vous pouvez utiliser l'API d'instantanés de volume CSI pour déclencher des sauvegardes Filestore, en ajoutant un champ
type:backup
dans la classe d'instantanés de volume.Vous pouvez utiliser l'expansion de volume avec le pilote CSI Filestore GKE. L'expansion de volume permet de redimensionner la capacité du volume.
Vous pouvez accéder aux instances Filestore existantes en utilisant des instances Filestore préprovisionnées dans les charges de travail Kubernetes. Vous pouvez également créer ou supprimer des instances Filestore de manière dynamique, et les utiliser dans des charges de travail Kubernetes à l'aide d'un objet StorageClass ou Deployment.
Compatible avec les multipartages Filestore pour GKE. Cette fonctionnalité vous permet de créer une instance Filestore et de lui attribuer simultanément plusieurs volumes persistants plus petits installés sur NFS, sur n'importe quel nombre de clusters GKE.
Conditions requises
- Pour utiliser le pilote CSI Filestore, vos clusters doivent utiliser GKE version 1.21 ou ultérieure.
- Pour utiliser la fonctionnalité de multipartages Filestore, vos clusters doivent utiliser GKE version 1.23 ou ultérieure.
- Le pilote CSI Filestore est compatible avec les clusters utilisant Linux uniquement. Les nœuds Windows Server ne sont pas compatibles.
- La taille minimale d'une instance pour Filestore est d'au moins 1 Tio. La taille minimale de l'instance dépend du niveau de service Filestore que vous avez sélectionné. Pour en savoir plus, consultez la page Niveaux de service.
- Filestore utilise le protocole du système de fichiers NFSv3 sur l'instance Filestore et accepte tous les clients compatibles avec NFSv3.
Avant de commencer
Avant de commencer, effectuez les tâches suivantes :
- Activez l'API Cloud Filestore et l'API Google Kubernetes Engine. Activer les API
- Si vous souhaitez utiliser Google Cloud CLI pour cette tâche, installez puis initialize gcloud CLI. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande
gcloud components update
.
- Si vous souhaitez utiliser Filestore sur un réseau VPC partagé, consultez les instructions de configuration supplémentaires disponibles dans la section Utiliser Filestore avec un VPC partagé.
Activer le pilote CSI Filestore sur un nouveau cluster
Pour activer le pilote CSI du pilote CSI Filestore lorsque vous créez un cluster standard, suivez ces étapes avec Google Cloud CLI ou la console Google Cloud.
gcloud
gcloud container clusters create CLUSTER_NAME \
--addons=GcpFilestoreCsiDriver \
--cluster-version=VERSION
Remplacez les éléments suivants :
CLUSTER_NAME
: nom du clusterVERSION
: numéro de version de GKE. Vous devez sélectionner la version 1.21 ou ultérieure pour utiliser cette fonctionnalité. Vous pouvez également utiliser l'option--release-channel
et spécifier une version disponible.
Console
Accédez à la page Google Kubernetes Engine dans Google Cloud Console.
Cliquez sur add_box Créer.
Sélectionnez le mode de cluster Standard, puis cliquez sur Configurer.
Configurez le cluster comme vous le souhaitez.
Dans le volet de navigation, sous Cluster, cliquez sur Fonctionnalités.
Cochez la case Activer le pilote CSI Filestore.
Cliquez sur Créer.
Si vous souhaitez utiliser Filestore sur un réseau VPC partagé, consultez la page Activer le pilote CSI Filestore sur un nouveau cluster avec un VPC partagé.
Après avoir activé le pilote CSI Filestore, vous pouvez l'utiliser dans les volumes Kubernetes à l'aide du nom du pilote et de l'approvisionneur : filestore.csi.storage.gke.io
.
Activer le pilote CSI Filestore sur un cluster existant
Pour activer le pilote CSI Filestore dans les clusters existants, utilisez Google Cloud CLI ou la console Google Cloud.
Pour activer le pilote sur un cluster existant, procédez comme suit :
gcloud
gcloud container clusters update CLUSTER_NAME \
--update-addons=GcpFilestoreCsiDriver=ENABLED
Remplacez CLUSTER_NAME
par le nom du cluster existant.
Console
Accédez à la page Google Kubernetes Engine dans Google Cloud Console.
Dans la liste des clusters, cliquez sur le nom du cluster que vous souhaitez modifier.
Sous Fonctionnalités, à côté du champ Pilote CSI Filestore, cliquez sur edit Modifier le pilote CSI Filestore.
Cochez la case Activer le pilote CSI Filestore.
Cliquez sur Save Changes (Enregistrer les modifications).
Désactiver le pilote CSI Filestore
Vous pouvez désactiver le pilote CSI Filestore sur un cluster Autopilot ou Standard existant à l'aide de la CLI Google Cloud ou de la console Google Cloud.
gcloud
gcloud container clusters update CLUSTER_NAME \
--update-addons=GcpFilestoreCsiDriver=DISABLED \
--region REGION
Remplacez les valeurs suivantes :
CLUSTER_NAME
: nom du cluster existant.REGION
: région choisie de votre cluster (par exemple,us-central1
).
Console
Dans Google Cloud Console, accédez au menu Google Kubernetes Engine.
Dans la liste des clusters, cliquez sur le nom du cluster que vous souhaitez modifier.
Sous Fonctionnalités, à côté du champ Pilote CSI Filestore, cliquez sur edit Modifier le pilote CSI Filestore.
Cochez la case Activer le pilote CSI Filestore.
Cliquez sur Save Changes (Enregistrer les modifications).
Accéder à des instances Filestore préexistantes à l'aide du pilote CSI Filestore
Cette section décrit la procédure d'utilisation standard d'un volume Kubernetes pour accéder à des instances Filestore préexistantes à l'aide du pilote CSI Filestore dans GKE :
Créer un PersistentVolume et un PersistentVolumeClaim pour accéder à l'instance
Créez un fichier manifeste similaire à celui présenté dans l'exemple suivant, puis nommez-le
preprov-filestore.yaml
:apiVersion: v1 kind: PersistentVolume metadata: name: PV_NAME spec: storageClassName: "" capacity: storage: 1Ti accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain volumeMode: Filesystem csi: driver: filestore.csi.storage.gke.io volumeHandle: "modeInstance/FILESTORE_INSTANCE_LOCATION/FILESTORE_INSTANCE_NAME/FILESTORE_SHARE_NAME" volumeAttributes: ip: FILESTORE_INSTANCE_IP volume: FILESTORE_SHARE_NAME --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteMany storageClassName: "" volumeName: PV_NAME resources: requests: storage: 1Ti
Pour créer les ressources
PersistentVolumeClaim
etPersistentVolume
en fonction du fichier manifestepreprov-filestore.yaml
, exécutez la commande suivante :kubectl apply -f preprov-filestore.yaml
Ensuite, créez un déploiement qui consomme le volume.
Créer un volume à l'aide du pilote CSI Filestore
Les sections suivantes décrivent la procédure d'utilisation standard d'un volume Kubernetes reposant sur un pilote CSI Filestore dans GKE.
- Créer un objet StorageClass
- Utiliser un objet PersistentVolumeClaim pour accéder au volume
- Créer un objet Deployment qui consomme le volume
Créer un objet StorageClass
Une fois le pilote CSI Filestore activé, GKE installe automatiquement les objets StorageClasses suivants pour le provisionnement d'instances Filestore :
zonal-rwx
, avec le niveau Filestore zonal Uniquement disponible pour la bande de capacité supérieure. Cette classe StorageClass est disponible dans les clusters GKE exécutant la version 1.27 ou ultérieure.enterprise-rwx
, en utilisant le niveau Filestore entreprise, où chaque volume PersistentVolume de Kubernetes est mappé à une instance Filestore. Cette classe StorageClass est disponible dans les clusters GKE exécutant la version 1.23 ou ultérieure.enterprise-multishare-rwx
, en utilisant le niveau Filestore entreprise, où chaque volume PersistentVolume de Kubernetes est mappé sur un partage d'une instance Filestore donnée. Cette classe StorageClass est disponible dans les clusters GKE exécutant la version 1.23 ou ultérieure. Pour en savoir plus, consultez la page Multipartages Filestore pour Google Kubernetes Engine.standard-rwx
, en utilisant le niveau de service Filestore HDD de basepremium-rwx
, en utilisant le niveau de service Filestore SSD de base
Exécutez la commande suivante pour trouver le nom de votre objet StorageClass
installé :
kubectl get sc
Vous pouvez également installer un autre objet StorageClass
qui utilise le pilote CSI Filestore en ajoutant filestore.csi.storage.gke.io
dans le champ provisioner
.
Enregistrez le manifeste suivant sous le nom
filestore-example-class.yaml
:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: filestore-example provisioner: filestore.csi.storage.gke.io volumeBindingMode: Immediate allowVolumeExpansion: true parameters: tier: standard network: default
Dans le fichier manifeste, examinez la configuration de paramètre suivante :
- Si vous définissez
volumeBindingMode
surImmediate
, le provisionnement du volume commence immédiatement. Cela est possible car les instances Filestore sont accessibles depuis n'importe quelle zone. Par conséquent, GKE n'a pas besoin de connaître la zone dans laquelle le pod est programmé, contrairement au disque persistant Compute Engine. Lorsque ce paramètre est défini surWaitForFirstConsumer
, GKE ne commence le provisionnement qu'après la planification du pod. Pour en savoir plus, consultez la section VolumeBindingMode. - Tout niveau peut être spécifié dans le paramètre
tier
(par exemple,standard
,premium
,zonal
ouenterprise
). + Le paramètrenetwork
peut être utilisé lors du provisionnement d'instances Filestore sur des VPC autres que ceux par défaut. Les VPC autres que ceux définis par défaut nécessitent la configuration de règles de pare-feu spéciales.
- Si vous définissez
Pour créer une ressource
StorageClass
basée sur le fichier manifestefilestore-example-class.yaml
, exécutez la commande suivante :kubectl create -f filestore-example-class.yaml
Si vous souhaitez utiliser Filestore sur un réseau VPC partagé, consultez la page Créer une StorageClass lorsque vous utilisez le pilote CSI Filestore avec un VPC partagé.
Utiliser un objet PersistentVolumeClaim pour accéder au volume
Vous pouvez créer une ressource PersistentVolumeClaim
qui fait référence à l'objet StorageClass
du pilote CSI Filestore.
Vous pouvez utiliser une StorageClass
préinstallée ou personnalisée.
L'exemple de fichier manifeste suivant crée un objet PersistentVolumeClaim
qui référence la StorageClass
nommée filestore-example
.
Enregistrez le fichier manifeste suivant sous le nom
pvc-example.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteMany storageClassName: filestore-example resources: requests: storage: 1Ti
Pour créer une ressource
PersistentVolume
basée sur le fichier manifestepvc-example.yaml
, exécutez la commande suivante :kubectl create -f pvc-example.yaml
Créer un objet Deployment qui consomme le volume
L'exemple de fichier manifeste de déploiement suivant utilise la ressource PersistentVolume
nommée pvc-example.yaml
.
Plusieurs pods peuvent partager la même ressource PersistentVolumeClaim
.
Enregistrez le fichier manifeste
filestore-example-deployment.yaml
suivant sous le nom :apiVersion: apps/v1 kind: Deployment metadata: name: web-server-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx volumeMounts: - mountPath: /usr/share/nginx/html name: mypvc volumes: - name: mypvc persistentVolumeClaim: claimName: podpvc --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteMany storageClassName: filestore-example resources: requests: storage: 1Ti
Pour créer un objet Deployment basé sur le fichier manifeste
filestore-example-deployment.yaml
, exécutez la commande suivante :kubectl apply -f filestore-example-deployment.yaml
Vérifiez que le déploiement a bien été créé :
kubectl get deployment
Le provisionnement des instances Filestore peut prendre un certain temps. Avant cette date, les déploiements ne renvoyaient pas à l'état
READY
. Vous pouvez vérifier la progression en surveillant votre état PVC en exécutant la commande suivante :kubectl get pvc
Le PVC devrait atteindre l'état
BOUND
une fois le provisionnement du volume terminé.
Ajouter des libellés aux instances Filestore
Vous pouvez utiliser des libellés pour regrouper des instances associées et stocker des métadonnées sur une instance. Un libellé est une paire clé-valeur qui vous aide à organiser vos instances Filestore. Vous pouvez associer un libellé à chaque ressource, puis filtrer les ressources par libellé.
Vous pouvez fournir des libellés à l'aide de la clé labels
dans StorageClass.parameters
.
Une instance Filestore peut être libellée avec des informations sur ce que l'instance PersistentVolumeClaim
/PersistentVolume
a créé. Les clés et valeurs des libellés personnalisés doivent respecter la convention d'attribution de noms des libellés.
Consultez l'exemple de classe de stockage Kubernetes pour appliquer des libellés personnalisés à l'instance Filestore.
Utiliser fsgroup avec des volumes Filestore
Kubernetes utilise fsGroup
pour modifier les autorisations et les droits de propriété du volume afin de faire correspondre un fsGroup
demandé par l'utilisateur dans le paramètre SecurityContext du pod.
Un fsGroup
est un groupe supplémentaire qui s'applique à tous les conteneurs d'un pod.
Vous pouvez appliquer un fsgroup aux volumes provisionnés par le pilote CSI Filestore.
Utiliser Filestore avec un VPC partagé
Cette section explique comment utiliser une instance Filestore sur un réseau VPC partagé à partir d'un projet de service.
Configurer un cluster avec un VPC partagé
Pour configurer vos clusters avec un réseau VPC partagé, procédez comme suit :
- Créer un hôte et un projet de service
- Activez l'API Google Kubernetes Engine sur votre projet hôte et sur votre projet de service.
- Dans votre projet hôte, créez un réseau et un sous-réseau.
- Activez le VPC partagé dans le projet hôte.
- Sur le projet hôte, accordez la liaison de rôle utilisateur
HostServiceAgent
pour le compte de service GKE du projet de service. - Activez l'accès privé aux services sur le réseau VPC partagé.
Activer le pilote CSI Filestore sur un nouveau cluster avec un VPC partagé
Pour activer le pilote CSI Filestore sur un nouveau cluster avec un VPC partagé, procédez comme suit :
Vérifiez les sous-réseaux et les plages secondaires utilisables. Lorsque vous créez un cluster, vous devez spécifier un sous-réseau ainsi que les plages d'adresses IP secondaires à utiliser pour les pods et les services du cluster.
gcloud container subnets list-usable \ --project=SERVICE_PROJECT_ID \ --network-project=HOST_PROJECT_ID
Le résultat ressemble à ce qui suit :
PROJECT REGION NETWORK SUBNET RANGE HOST_PROJECT_ID us-central1 shared-net tier-1 10.0.4.0/22 ┌──────────────────────┬───────────────┬─────────────────────────────┐ │ SECONDARY_RANGE_NAME │ IP_CIDR_RANGE │ STATUS │ ├──────────────────────┼───────────────┼─────────────────────────────┤ │ tier-1-pods │ 10.4.0.0/14 │ usable for pods or services │ │ tier-1-services │ 10.0.32.0/20 │ usable for pods or services │ └──────────────────────┴───────────────┴─────────────────────────────┘
créer un cluster GKE ; Les exemples suivants montrent comment utiliser gcloud CLI pour créer un cluster Autopilot ou Standard configuré pour un VPC partagé. Les exemples suivants utilisent les noms de réseau, de sous-réseau et de plage provenant de la section Créer un réseau et deux sous-réseaux.
Autopilot
gcloud container clusters create-auto tier-1-cluster \ --project=SERVICE_PROJECT_ID \ --region=COMPUTE_REGION \ --network=projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME \ --subnetwork=projects/HOST_PROJECT_ID/regions/COMPUTE_REGION/subnetworks/SUBNET_NAME \ --cluster-secondary-range-name=tier-1-pods \ --services-secondary-range-name=tier-1-services
Standard
gcloud container clusters create tier-1-cluster \ --project=SERVICE_PROJECT_ID \ --zone=COMPUTE_REGION \ --enable-ip-alias \ --network=projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME \ --subnetwork=projects/HOST_PROJECT_ID/regions/COMPUTE_REGION/subnetworks/SUBNET_NAME \ --cluster-secondary-range-name=tier-1-pods \ --services-secondary-range-name=tier-1-services \ --addons=GcpFilestoreCsiDriver
Créez des règles de pare-feu pour autoriser la communication entre les nœuds, les pods et les services de votre cluster. L'exemple suivant montre comment créer une règle de pare-feu nommée
my-shared-net-rule-2
.gcloud compute firewall-rules create my-shared-net-rule-2 \ --project HOST_PROJECT_ID \ --network=NETWORK_NAME \ --allow=tcp,udp \ --direction=INGRESS \ --source-ranges=10.0.4.0/22,10.4.0.0/14,10.0.32.0/20
Dans l'exemple, les valeurs de plages d'adresses IP sources proviennent de l'étape précédente, où vous avez vérifié les sous-réseaux et les plages secondaires utilisables.
Créer une classe StorageClass lorsque vous utilisez le pilote CSI Filestore avec un VPC partagé
L'exemple suivant montre comment créer une classe StorageClass lorsque vous utilisez le pilote CSI Filestore avec un VPC partagé :
cat <<EOF | kubectl apply -f -
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: filestore-sharedvpc-example
provisioner: filestore.csi.storage.gke.io
parameters:
network: "projects/HOST_PROJECT_ID/global/networks/SHARED_VPC_NAME"
connect-mode: PRIVATE_SERVICE_ACCESS
reserved-ip-range: RESERVED_IP_RANGE_NAME
allowVolumeExpansion: true
EOF
Remplacez les éléments suivants :
HOST_PROJECT_ID
: ID ou nom du projet hôte du réseau VPC partagé.SHARED_VPC_NAME
: nom du réseau VPC partagé que vous avez créé précédemmentRESERVED_IP_RANGE_NAME
: nom de la plage d'adresses IP réservée spécifique dans laquelle provisionner l'instance Filestore. Ce champ est facultatif. Si une plage d'adresses IP réservée est spécifiée, elle doit être une plage d'adresses nommée et non une valeur CIDR directe.
Si vous souhaitez provisionner un volume sauvegardé par des multipartages Filestore sur des clusters GKE exécutant la version 1.23 ou ultérieure, consultez la page Optimiser le stockage avec les multipartages Filestore pour GKE.
Étapes suivantes
- Apprenez à déployer une charge de travail Filestore avec état sur GKE.
- Découvrez comment partager une instance Filestore entreprise avec plusieurs volumes persistants.
- Découvrez comment utiliser l'expansion du volume.
- Découvrez comment utiliser des instantanés de volume.
- En savoir plus sur le pilote CSI sur GitHub