Ce guide explique comment utiliser les multipartages Filestore pour Google Kubernetes Engine avec le pilote CSI GKE Filestore.
Avant de commencer
Avant de commencer, suivez les étapes de configuration requises pour utiliser Filestore.
Activez la version 1.23 ou ultérieure du pilote CSI GKE Filestore :
Les versions 1.23 à 1.26 du pilote acceptent jusqu'à 10 partages par instance.
Les versions 1.27 ou ultérieures du pilote acceptent jusqu'à 80 partages par instance.
Pour connaître les dernières exigences du pilote CSI GKE Filestore, consultez la page Accéder aux instances Filestore avec le pilote CSI Filestore.
Utiliser les multipartages Filestore avec plusieurs applications
Cette section vous explique comment déployer deux applications, un Deployment et un Statefulset, chacune utilisant une ressource StorageClass définie sur des multipartages Filestore. Vous verrez également comment GKE applique le bin packing (un processus permettant d'empaqueter efficacement les applications dans vos nœuds GKE) à tous les volumes dans la même instance Filestore entreprise sous-jacente.
Utilisez la ressource StorageClass fournie par GKE,
enterprise-multishare-rwx
, pour créer des instances acceptant jusqu'à dix partages.- Si vous souhaitez créer des instances acceptant jusqu'à 80 partages, vous devez créer une ressource StorageClass personnalisée. Pour les besoins de ce guide, vous utiliserez une ressource StorageClass avec une limite de dix partages par instance.
Une fois le pilote CSI GKE Filestore activé, les utilisateurs peuvent accéder à la ressource StorageClass multipartage
enterprise-multishare-rwx
fournie par GKE avec la configuration suivante. En faisant référence à cette StorageClass, le pilote CSI GKE Filestore utilise le provisionnement dynamique de volumes pour créer automatiquement des volumes persistants (PV, Persistent Volume) pour les nouvelles revendications de volume persistant (PVC, Persistent Volume Claim) en fonction de ce que nécessite la demande de charge de travail GKE :kubectl describe sc enterprise-multishare-rwx Name: enterprise-multishare-rwx IsDefaultClass: No Annotations: components.gke.io/component-name=filestorecsi,components.gke.io/component-version=0.7.2,components.gke.io/layer=addon Provisioner: filestore.csi.storage.gke.io Parameters: instance-storageclass-label=enterprise-multishare-rwx,multishare=true,tier=enterprise AllowVolumeExpansion: True MountOptions: <none> ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: <none>
Créer une ressource StorageClass personnalisée
Si vous souhaitez bénéficier de la dernière limite de capacité, soit 80 partages par instance Filestore, créez une ressource StorageClass personnalisée basée sur le modèle suivant :
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: csi-filestore-multishare-128
provisioner: filestore.csi.storage.gke.io
parameters:
tier: enterprise
multishare: "true"
max-volume-size: "128Gi"
network: default
allowVolumeExpansion: true
Lorsque vous renommez la ressource StorageClass, tenez compte des exigences suivantes :
Le nom StorageClass doit être un nom de sous-domaine DNS valide.
Le nom de la StorageClass multipartage est également utilisé comme libellé d'instance et doit suivre les consignes concernant le noms des libellés.
Si votre application nécessite un provisionnement de volumes immédiat, incluez le mode de liaison de volume
Immediate
:volumeBindingMode: Immediate
Utilisez cette spécification, par exemple, si vous ne souhaitez pas que le provisionnement de volumes dépende de la création de pod dans le cluster GKE.
Depuis la version 1.27 du pilote, si vous souhaitez attribuer plus de dix partages par instance, incluez le paramètre
max-volume-size
et attribuez-lui l'une des valeurs acceptées, spécifiées dans la première colonne :Taille maximale de volume (taille du partage) Nombre maximal de partages par instance 128 Gio 80 256 Gio 40 512 Gio 20 1 024 Gio 10 Ainsi, par exemple, l'ajout de la paire clé-valeur
max-volume-size: "128Gi"
garantit que la ressource StorageClass mappe jusqu'à 80 partages, dont la taille de chacun va de 10 Gio à 128 Gio, sur une seule instance de niveau entreprise de 10 Tio.Cette fonctionnalité est rétrocompatible avec les instances Filestore créées par les versions 1.23 à 1.26 des pilotes CSI GKE.
Les instances existantes peuvent créer des PVC, ou des partages, en appliquant la taille de partage minimale étendue de 10 Gio.
La version 1.27 ou ultérieure du pilote CSI Filestore GKE reconnaît les anciennes instances entreprise et leur attribue une taille de partage maximale par défaut de 1 024 Gio (1 Tio). Par conséquent, les anciennes instances sont limitées à un maximum de dix partages par instance.
Pour en savoir plus, consultez la page Multipartages Filestore pour GKE.
Créez un déploiement avec plusieurs instances répliquées de pods à l'aide d'un seul PVC.
Créez un fichier de configuration YAML semblable à celui-ci :
cat <<EOF | kubectl apply -f - apiVersion: apps/v1 kind: Deployment metadata: name: web-server-multishare labels: app: nginx spec: replicas: 5 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: test-pvc-fs --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: test-pvc-fs spec: accessModes: - ReadWriteMany storageClassName: enterprise-multishare-rwx resources: requests: storage: 100Gi EOF
Vérifiez les instances répliquées des pods.
a. À partir de la ligne de commande, exécutez la commande suivante pour vérifier l'état du PVC :
kubectl get pvc
Un résultat semblable à la réponse suivante doit s'afficher :
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE test-pvc-fs Bound pvc-056d769d-a709-4bb2-b6d3-0361871b27a2 100Gi RWX enterprise-multishare-rwx 35m
b. À partir de la ligne de commande, exécutez la commande suivante pour vérifier l'état du pod :
kubectl get pod
Un résultat semblable à la réponse suivante doit s'afficher :
NAME READY STATUS RESTARTS AGE web-server-multishare-76c9ffb4b5-2dhml 1/1 Running 0 35m web-server-multishare-76c9ffb4b5-7mtcb 1/1 Running 0 35m web-server-multishare-76c9ffb4b5-csdbd 1/1 Running 0 35m web-server-multishare-76c9ffb4b5-rgx82 1/1 Running 0 35m web-server-multishare-76c9ffb4b5-zjl27 1/1 Running 0 35m
Effectuez le scaling des instances répliquées.
a. À partir de la ligne de commande, exécutez la commande suivante pour modifier le déploiement :
kubectl edit deployment web-server-multishare
b. Le fichier s'ouvre dans la ligne de commande. Recherchez le champ
spec.replicas
et remplacez la valeur par10
.c. À partir de la ligne de commande, exécutez la commande suivante pour voir la modification appliquée :
kubectl get pod
Un résultat semblable à la réponse suivante doit s'afficher :
NAME READY STATUS RESTARTS AGE web-server-multishare-76c9ffb4b5-2dhml 1/1 Running 0 36m web-server-multishare-76c9ffb4b5-5ctkf 1/1 Running 0 3s web-server-multishare-76c9ffb4b5-7mtcb 1/1 Running 0 36m web-server-multishare-76c9ffb4b5-8dwmw 1/1 Running 0 2s web-server-multishare-76c9ffb4b5-csdbd 1/1 Running 0 36m web-server-multishare-76c9ffb4b5-lndcq 1/1 Running 0 2s web-server-multishare-76c9ffb4b5-rgx82 1/1 Running 0 36m web-server-multishare-76c9ffb4b5-vtd6p 1/1 Running 0 3s web-server-multishare-76c9ffb4b5-xm49s 1/1 Running 0 3s web-server-multishare-76c9ffb4b5-zjl27 1/1 Running 0 36m
Notez que dix pods sont en cours d'exécution.
d. À partir de la ligne de commande, exécutez la commande suivante :
kubectl get deployment
Un résultat semblable à la réponse suivante doit s'afficher :
NAME READY UP-TO-DATE AVAILABLE AGE web-server-multishare 10/10 10 10 36m
e. À partir de la ligne de commande, exécutez la commande suivante pour vérifier l'état d'association du PVC :
kubectl get pvc
Un résultat semblable à la réponse suivante doit s'afficher :
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE test-pvc-fs Bound pvc-056d769d-a709-4bb2-b6d3-0361871b27a2 100Gi RWX enterprise-multishare-rwx 37m
f. À partir de la ligne de commande, exécutez la commande suivante pour modifier le déploiement :
kubectl edit deployment web-server-multishare
g. Le fichier s'ouvre dans la ligne de commande. Recherchez le champ
spec.replicas
et remplacez la valeur par2
.h. À partir de la ligne de commande, exécutez la commande suivante pour voir la modification appliquée :
kubectl get pod
Un résultat semblable à la réponse suivante doit s'afficher :
NAME READY STATUS RESTARTS AGE web-server-multishare-76c9ffb4b5-2dhml 1/1 Running 0 38m web-server-multishare-76c9ffb4b5-7mtcb 1/1 Running 0 38m
Déployez un StatefulSet.
Déployez une deuxième application qui partage l'instance Filestore sous-jacente.
Pour ce faire, provisionnez 200 Gio d'espace et vérifiez qu'il utilise la même instance Filestore sous-jacente que la première application.
Vous allez ensuite effectuer le scaling de l'application vers neuf instances répliquées utilisant 900 Gio au total (9 instances répliquées utilisant 100 Gio chacune) et vérifier que GKE utilise la même instance Filestore en partageant l'instance.
Créez un fichier de configuration YAML semblable à celui-ci :
cat <<EOF | kubectl apply -f - apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: serviceName: "nginx" replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: registry.k8s.io/nginx-slim:0.8 ports: - containerPort: 80 name: web volumeMounts: - name: test-pvc-multishare mountPath: /usr/share/nginx/html volumeClaimTemplates: - metadata: name: test-pvc-multishare spec: accessModes: [ "ReadWriteMany" ] storageClassName: enterprise-multishare-rwx resources: requests: storage: 100Gi EOF
Vérifiez les instances répliquées et les volumes Statefulset.
À partir de la ligne de commande, exécutez la commande suivante :
kubectl get pod
Un résultat semblable à la réponse suivante doit s'afficher :
NAME READY STATUS RESTARTS AGE web-0 1/1 Running 0 4m48s web-1 1/1 Running 0 3m32s web-server-multishare-76c9ffb4b5-2dhml 1/1 Running 0 57m web-server-multishare-76c9ffb4b5-7mtcb 1/1 Running 0 57m
Notez que les deux premiers pods sont associés au StatefulSet. Les deux derniers pods sont associés au déploiement.
À partir de la ligne de commande, exécutez la commande suivante :
kubectl get statefulset
Un résultat semblable à la réponse suivante doit s'afficher :
NAME READY AGE web 2/2 2m8s
À partir de la ligne de commande, exécutez la commande suivante :
kubectl get pvc
Un résultat semblable à la réponse suivante doit s'afficher :
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE test-pvc-fs Bound pvc-056d769d-a709-4bb2-b6d3-0361871b27a2 100Gi RWX enterprise-multishare-rwx 54m test-pvc-multishare-web-0 Bound pvc-7aa21b5a-5343-4547-b7d7-414c16af15a7 100Gi RWX enterprise-multishare-rwx 114s test-pvc-multishare-web-1 Bound pvc-8b37cd6e-d764-4d38-80d7-d74228536cfe 100Gi RWX enterprise-multishare-rwx 38s
Le PVC
test-pvc-fs
est associé au déploiementweb-server-multishare
.Les PVC
test-pvc-multishare-web-0
ettest-pvc-multishare-web-1
sont associés au Statefulset.Effectuez le scaling des instances répliquées Statefulset.
Augmentez le nombre d'instances répliquées à neuf. À mesure que le nombre augmente, les PVC correspondants sont créés.
a. À partir de la ligne de commande, exécutez la commande suivante :
kubectl edit statefulset web
b. Le fichier s'ouvre dans la ligne de commande. Recherchez le champ
spec.replicas
et remplacez la valeur par9
.c. À partir de la ligne de commande, exécutez la commande suivante pour voir la modification appliquée :
kubectl get statefulset
Un résultat semblable à la réponse suivante doit s'afficher :
NAME READY AGE web 9/9 13m
d. À partir de la ligne de commande, exécutez la commande suivante :
kubectl get deployment
Un résultat semblable à la réponse suivante doit s'afficher :
NAME READY UP-TO-DATE AVAILABLE AGE web-server-multishare 2/2 2 2 65m
e. À partir de la ligne de commande, exécutez la commande suivante :
kubectl get pvc
Un résultat semblable à la réponse suivante doit s'afficher :
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE test-pvc-fs Bound pvc-056d769d-a709-4bb2-b6d3-0361871b27a2 100Gi RWX enterprise-multishare-rwx 65m test-pvc-multishare-web-0 Bound pvc-7aa21b5a-5343-4547-b7d7-414c16af15a7 100Gi RWX enterprise-multishare-rwx 13m test-pvc-multishare-web-1 Bound pvc-8b37cd6e-d764-4d38-80d7-d74228536cfe 100Gi RWX enterprise-multishare-rwx 12m test-pvc-multishare-web-2 Bound pvc-3fcbd132-939f-4364-807a-7c8ac6a3e64e 100Gi RWX enterprise-multishare-rwx 5m12s test-pvc-multishare-web-3 Bound pvc-5894afa5-2502-4ee7-9d5c-b7378cb85479 100Gi RWX enterprise-multishare-rwx 4m57s test-pvc-multishare-web-4 Bound pvc-ebbe452b-bc8f-4624-a830-a2094cce0d67 100Gi RWX enterprise-multishare-rwx 4m36s test-pvc-multishare-web-5 Bound pvc-5a73a698-d174-44cb-a3a1-e767966c3417 100Gi RWX enterprise-multishare-rwx 4m20s test-pvc-multishare-web-6 Bound pvc-102da6a9-2ca6-4f9e-9896-8fe14709db7a 100Gi RWX enterprise-multishare-rwx 3m55s test-pvc-multishare-web-7 Bound pvc-160e81cd-c5bf-4ae6-966e-518e8249e02d 100Gi RWX enterprise-multishare-rwx 3m38s test-pvc-multishare-web-8 Bound pvc-9b52d773-2e9a-40de-881c-dc06945ba3d7 100Gi RWX enterprise-multishare-rwx 118s
Vérifiez l'état de l'instance Filestore.
Vous disposez maintenant d'un déploiement avec deux pods d'instances répliquées, et d'un StatefulSet avec neuf pods d'instances répliquées et un total de dix PVC, chacun d'une taille de 100 Gio. Tous les volumes sont regroupés sur une seule instance de multipartages Filestore.
a. À partir de la ligne de commande, exécutez la commande
instances list
suivante :gcloud beta filestore instances list --project=YOUR_PROJECT_ID --region=REGION
où :
YOUR_PROJECT_ID est le nom du projet utilisé. Exemple :
my-project
.REGION est le nom de la région utilisée. Exemple :
us-central1
.
Un résultat semblable à la réponse suivante doit s'afficher :
INSTANCE_NAME LOCATION TIER CAPACITY_GB FILE_SHARE_NAME IP_ADDRESS STATE CREATE_TIME fs-a767cef8-738e-4c8e-b70b-09cbb872d016 us-central1 ENTERPRISE 1024 N/A 10.192.53.2 READY 2022-06-21T21:15:30
b. À partir de la ligne de commande, exécutez la commande
instances describe
suivante :gcloud filestore instances describe fs-a767cef8-738e-4c8e-b70b-09cbb872d016 --project=YOUR_PROJECT_ID --region=REGION capacityGb: '1024' capacityStepSizeGb: '256' createTime: '2022-06-21T21:15:30.464237089Z' labels: storage_gke_io_created-by: filestore_csi_storage_gke_io storage_gke_io_storage-class-id: enterprise-multishare-rwx maxCapacityGb: '10240' maxShareCount: '10' multiShareEnabled: true name: projects/YOUR_PROJECT_ID/locations/REGION/instances/fs-a767cef8-738e-4c8e-b70b-09cbb872d016 networks: - connectMode: DIRECT_PEERING ipAddresses: - 10.192.53.2 modes: - MODE_IPV4 network: csi-filestore-test-network reservedIpRange: 10.192.53.0/26 state: READY tier: ENTERPRISE
où :
Développer un PVC et vérifier l'instance Filestore
Cette section explique comment développer un PVC existant et vérifier la taille de l'instance Filestore.
Développez un PVC.
Les PVC, qui reposent sur des partages dans une instance de multipartages Filestore, peuvent atteindre la taille maximale spécifiée dans le paramètre
max-volume-size
. Pour vérifier cela, développez l'un des volumes associés au StatefulSet lorsque le pod l'utilise.À partir de la ligne de commande, exécutez la commande suivante pour vérifier la taille actuelle du PVC de l'instance répliquée 0 :
kubectl get pvc test-pvc-multishare-web-0 -o json { "apiVersion": "v1", "kind": "PersistentVolumeClaim", "metadata": { "annotations": { "pv.kubernetes.io/bind-completed": "yes", "pv.kubernetes.io/bound-by-controller": "yes", "volume.beta.kubernetes.io/storage-provisioner": "filestore.csi.storage.gke.io", "volume.kubernetes.io/storage-provisioner": "filestore.csi.storage.gke.io" }, "creationTimestamp": "2022-06-21T22:07:42Z", "finalizers": [ "kubernetes.io/pvc-protection" ], "labels": { "app": "nginx" }, "name": "test-pvc-multishare-web-0", "namespace": "default", "resourceVersion": "48395", "uid": "7aa21b5a-5343-4547-b7d7-414c16af15a7" }, "spec": { "accessModes": [ "ReadWriteMany" ], "resources": { "requests": { "storage": "100Gi" } }, "storageClassName": "enterprise-multishare-rwx", "volumeMode": "Filesystem", "volumeName": "pvc-7aa21b5a-5343-4547-b7d7-414c16af15a7" }, "status": { "accessModes": [ "ReadWriteMany" ], "capacity": { "storage": "100Gi" }, "phase": "Bound" } }
À partir de la ligne de commande, exécutez la commande suivante pour augmenter la taille à 500 Gio :
kubectl edit pvc test-pvc-multishare-web-0
Le fichier s'ouvre dans la ligne de commande. Recherchez le champ
spec.resources.requests.storage
et remplacez la valeur par500Gi
.À partir de la ligne de commande, exécutez la commande suivante pour voir la modification appliquée :
kubectl get pvc test-pvc-multishare-web-0
Un résultat semblable à la réponse suivante doit s'afficher :
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE test-pvc-multishare-web-0 Bound pvc-7aa21b5a-5343-4547-b7d7-414c16af15a7 500Gi RWX enterprise-multishare-rwx 28m
Le pilote CSI Filestore a accepté la requête, en développant d'abord l'instance Filestore sous-jacente, puis en développant le partage qui sauvegarde le PVC.
Plus précisément, le pilote CSI Filestore a automatiquement étendu l'instance à 1 536 Gi pour prendre en charge la nouvelle taille de partage de 500 Gi.
À partir de la ligne de commande, exécutez la commande
instances describe
suivante pour vérifier la capacité de l'instance Filestore :gcloud filestore instances describe fs-a767cef8-738e-4c8e-b70b-09cbb872d016 --project=YOUR_PROJECT_ID --region=REGION capacityGb: '1536' capacityStepSizeGb: '256' createTime: '2022-06-21T21:15:30.464237089Z' labels: storage_gke_io_created-by: filestore_csi_storage_gke_io storage_gke_io_storage-class-id: enterprise-multishare-rwx maxCapacityGb: '10240' maxShareCount: '10' multiShareEnabled: true name: projects/YOUR_PROJECT_ID/locations/us-central1/instances/fs-a767cef8-738e-4c8e-b70b-09cbb872d016 networks: - connectMode: DIRECT_PEERING ipAddresses: - 10.192.53.2 modes: - MODE_IPV4 network: csi-filestore-test-network reservedIpRange: 10.192.53.0/26 state: READY tier: ENTERPRISE
où :
Provisionnement dynamique sur un VPC partagé
Le pilote CSI Filestore pour GKE permet le provisionnement dynamique des volumes dans un projet de service sous un VPC partagé. La section suivante montre comment utiliser le pilote CSI Filestore pour provisionner des volumes de manière dynamique sur des instances de multipartages Filestore, dans un projet de service et dans le cadre d'un réseau VPC partagé.
Suivez les étapes de configuration pour l'accès privé aux services et un réseau VPC partagé.
Créez une ressource StorageClass pour provisionner de manière dynamique, sur un VPC partagé, des volumes reposant sur une instance de multipartages Filestore.
Exécutez la commande suivante pour déployer une ressource
StorageClass
:cat <<EOF | kubectl apply -f - apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-filestore-multishare-sharedvpc provisioner: filestore.csi.storage.gke.io parameters: network: "projects/HOST_PROJECT_ID/global/networks/SHARED_VPC_NAME" connect-mode: PRIVATE_SERVICE_ACCESS tier: enterprise multishare: "true" allowVolumeExpansion: true EOF
où :
HOST_PROJECT_ID est l'ID ou le nom du projet hôte du réseau VPC partagé. Exemple :
my-host-project
.SHARED_VPC_NAME est le nom du réseau VPC partagé. Exemple :
my-shared-vpc
.
Si vous souhaitez déployer votre ressource dans une plage d'adresses IP réservée, ajoutez la ligne suivante aux paramètres utilisés dans la commande :
reserved-ip-range: RESERVED_NAME
Où RESERVED_NAME est le nom de la plage d'adresses IP réservée dans laquelle une instance Filestore peut être provisionnée. Exemple :
filestore-reserved-ip-range
. 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.Pour en savoir plus, consultez les sections Allouer des plages d'adresses IP ou Configurer une plage d'adresses IP réservée. Pour consulter un exemple de création d'un nom réservé à l'aide de la console Google Cloud, consultez la section Créer une allocation d'adresses IP.
Créez un déploiement.
Exécutez la commande suivante pour créer une ressource
Deployment
:cat <<EOF | kubectl apply -f - apiVersion: apps/v1 kind: Deployment metadata: name: web-server-multishare labels: app: nginx spec: replicas: 5 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: test-pvc-fs-sharedvpc --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: test-pvc-fs-sharedvpc spec: accessModes: - ReadWriteMany storageClassName: csi-filestore-multishare-sharedvpc resources: requests: storage: 100Gi EOF
Instances Filestore compatibles avec CMEK
Vous pouvez créer des volumes GKE hébergés sur des instances de multipartages Filestore exploitant le chiffrement CMEK. Dans cette section, vous allez apprendre à configurer une clé de chiffrement gérée par le client (CMEK) pour votre instance Filestore.
Les détails de la clé gérée par le client peuvent être fournis dans la StorageClass. La fonctionnalité CMEK est activée sur toutes les instances créées dynamiquement par le pilote CSI Filestore, qui fait référence à cette StorageClass.
Créez une StorageClass activée par CMEK.
a. Exécutez la commande suivante :
cat <<EOF | kubectl apply -f - apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-filestore-multishare-cmek provisioner: filestore.csi.storage.gke.io parameters: tier: enterprise multishare: "true" instance-encryption-kms-key: projects/KEY_PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME allowVolumeExpansion: true EOF
où :
Créez un déploiement.
b. Exécutez la commande suivante pour créer une ressource
Deployment
:cat <<EOF | kubectl apply -f - apiVersion: apps/v1 kind: Deployment metadata: name: web-server-multishare labels: app: nginx spec: replicas: 5 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: test-pvc-fs-cmek --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: test-pvc-fs-cmek spec: accessModes: - ReadWriteMany storageClassName: csi-filestore-multishare-cmek resources: requests: storage: 100Gi EOF
Mapper des PVC à des instances Filestore
Dans cette section, vous allez apprendre à mapper les PVC à vos instances Filestore.
Avec les instances de multipartages Filestore, chaque PVC est hébergé sur une instance Filestore par le pilote CSI Filestore. Les détails de l'instance Filestore sous-jacente hébergeant le volume et le partage représentant le volume Kubernetes sont capturés dans le champ volumeHandle
de la spécification de volumes persistants. Le format de la valeur du champ est le suivant :
modeMultishare/<storageclass-prefix>/<project>/<region>/<filestore-instance-name>/<filestore-share-name>
La commande kubectl
suivante permet de déterminer rapidement les mappages entre un PVC, un PV, une instance Filestore et un partage Filestore.
À partir de la ligne de commande, exécutez la commande suivante :
kubectl get pv -o jsonpath='{range .items[*]}{"pv="}{.metadata.name}{",pvc="}{.spec.claimRef.name}{",volumeHandle="}{.spec.csi.volumeHandle}{"\n"}{end}'
Un résultat semblable à la réponse suivante doit s'afficher :
pv=pvc-67ad9abd-f25e-4130-b7ca-64d28bd29525,pvc=test-pvc-multishare,volumeHandle=modeMultishare/csi-filestore-multishare-sharedvpc/YOUR_PROJECT_ID/us-central1/fs-2109f680-3f04-4ada-b4bc-2a1c7fc47b88/pvc_67ad9abd_f25e_4130_b7ca_64d28bd29525
pv=pvc-c80f4de0-9916-4957-b8ae-b21206650ac0,pvc=test-pvc-fs-sharedvpc,volumeHandle=modeMultishare/csi-filestore-multishare-sharedvpc/YOUR_PROJECT_ID/us-central1/fs-2109f680-3f04-4ada-b4bc-2a1c7fc47b88/pvc_c80f4de0_9916_4957_b8ae_b21206650ac0
où :
- YOUR_PROJECT_ID est le nom du projet utilisé. Exemple :
my-project
.
Notez que deux volumes persistants du cluster sont hébergés sur une seule instance Filestore.
Étapes suivantes
- Créez une instance sur un réseau VPC partagé dans des projets de service.
- Comparez les avantages relatifs du stockage de blocs, de fichiers et d'objets.
- Options de stockage pour les charges de travail HPC dans Google Cloud.