Accedi alle istanze Filestore con il driver CSI Filestore

Il driver CSI Filestore è il modo principale per utilizzare le istanze Filestore con Google Kubernetes Engine (GKE). Il driver CSI Filestore offre un'esperienza completamente gestita basata sul driver CSI Filestore open sourceGoogle Cloud .

La versione del driver CSI Filestore è associata ai numeri di versione secondaria di Kubernetes. La versione del driver CSI Filestore è in genere l'ultima disponibile al momento del rilascio della versione secondaria di Kubernetes. I driver vengono aggiornati automaticamente quando il cluster viene sottoposto all'upgrade all'ultima patch GKE.

Vantaggi

Il driver CSI Filestore offre i seguenti vantaggi:

  • Hai accesso allo spazio di archiviazione NFS completamente gestito tramite le API Kubernetes (kubectl).

  • Puoi utilizzare il driver CSI Filestore di GKE per eseguire il provisioning dinamico dei tuoi PersistentVolume.

  • Puoi utilizzare le istantanee del volume con il driver CSI Filestore GKE. Gli snapshot dei volumi CSI possono essere utilizzati per creare backup Filestore.

    Un backup di Filestore crea una copia differenziale della condivisione file, inclusi tutti i dati e i metadati dei file, e la archivia separatamente dall'istanza. Puoi ripristinare questa copia solo in una nuova istanza Filestore. Il ripristino in un'istanza Filestore esistente non è supportato. Puoi utilizzare l'API CSI volume snapshot per attivare i backup di Filestore aggiungendo un campo type:backup nella classe snapshot del volume.

  • Puoi utilizzare l'espansione del volume con il driver CSI Filestore GKE. L'espansione del volume ti consente di ridimensionare la capacità del volume.

  • Puoi accedere alle istanze Filestore esistenti utilizzando istanze Filestore pre-provisioning nei carichi di lavoro Kubernetes. Puoi anche creare o eliminare dinamicamente istanze Filestore e utilizzarle nei carichi di lavoro Kubernetes con una StorageClass o un Deployment.

  • Supporta Filestore Multishares per GKE. Questa funzionalità ti consente di creare un'istanza Filestore e allocare più volumi permanenti montati su NFS più piccoli contemporaneamente su un numero qualsiasi di cluster GKE.

  • Supporta la scalabilità indipendente delle prestazioni. Puoi scalare dinamicamente le prestazioni (IOPS) di Filestore indipendentemente dalla capacità di archiviazione in fase di runtime senza interruzioni del servizio.

Requisiti

  • Per utilizzare il driver CSI Filestore, i cluster devono soddisfare i seguenti requisiti:

    • La versione di GKE richiesta dipende dal livello di servizio Filestore e dalle funzionalità che intendi utilizzare. Consulta la tabella Livelli di servizio, protocolli e versioni GKE supportati per le combinazioni supportate.
    • Il driver CSI Filestore è supportato solo per i cluster che utilizzano nodi Linux. I nodi Windows Server non sono supportati.
    • La dimensione minima dell'istanza è 1 TiB.

    Per saperne di più, consulta Livelli di servizio.

Livelli di servizio, protocolli e versioni di GKE supportati

La tabella seguente descrive le combinazioni supportate di livelli di servizio Filestore, protocolli e le versioni GKE minime richieste per l'utilizzo con il driver CSI Filestore.

Livello di servizio Tipo di condivisione Versione minima di GKE per NFSv3 Versione minima di GKE per NFSv4.1
Aziende Condivisione singola, condivisione multipla 1,25 1,33 (solo una condivisione)
Zonale (1 TiB - 9,75 TiB) Singola quota 1,31 1,33
Zonale (10 TiB - 100 TiB) Singola quota 1,27 1,33
Regionale(1 TiB - 9,75 TiB) Singola quota 1.33.4-gke.1172000 1.33.4-gke.1172000
Regionale(10 TiB - 100 TiB) Singola quota 1.33.4-gke.1172000 1.33.4-gke.1172000
HDD base (100 GiB - 63,9 TiB) Singola quota 1,33 Non supportata
HDD base Singola quota 1.21 Non supportata
SSD base Singola quota 1.21 Non supportata

Filestore utilizza per impostazione predefinita il protocollo del file system NFSv3 sull'istanza Filestore e supporta qualsiasi client compatibile con NFSv3.

* A seconda dell'accesso alla funzionalità delle istanze di piccola capacità, l'intervallo di capacità inferiore per le istanze regionali Filestore può essere compreso tra 100 GiB e 10.239 GiB o tra 1 TiB e 9,75 TiB. Per saperne di più, consulta Istanze Filestore di piccola capacità.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:

  • Abilita l'API Cloud Filestore e l'API Google Kubernetes Engine.
  • Abilita le API
  • Per utilizzare Google Cloud CLI per questa attività, installala e poi inizializza gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima versione eseguendo il comando gcloud components update. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento.
  • Assicurati di avere un cluster Autopilot o Standard esistente. Se ne hai bisogno, crea un cluster Autopilot. Il driver CSI Filestore è abilitato per impostazione predefinita per i cluster Autopilot.

  • Se vuoi utilizzare Filestore su una rete VPC condivisa, consulta le istruzioni di configurazione aggiuntive in Utilizzare Filestore con il VPC condiviso.

Abilita il driver CSI Filestore sul cluster Standard

Per abilitare il driver CSI Filestore sui cluster Standard, utilizza Google Cloud CLI o la console Google Cloud .

Per abilitare il driver su un cluster Standard esistente, completa i seguenti passaggi:

gcloud

gcloud container clusters update CLUSTER_NAME \
   --update-addons=GcpFilestoreCsiDriver=ENABLED

Sostituisci CLUSTER_NAME con il nome del cluster esistente.

Console

  1. Vai alla pagina Google Kubernetes Engine nella console Google Cloud .

    Vai a Google Kubernetes Engine

  2. Nell'elenco dei cluster, fai clic sul nome del cluster da modificare.

  3. Nella sezione Funzionalità, accanto al campo Driver CSI Filestore, fai clic su Modifica driver CSI Filestore.

  4. Seleziona la casella di controllo Abilita driver CSI Filestore.

  5. Fai clic su Salva modifiche.

Se vuoi utilizzare Filestore su una rete VPC condivisa, consulta Attivare il driver CSI Filestore su un nuovo cluster con VPC condiviso.

Dopo aver abilitato il driver CSI Filestore, puoi utilizzarlo nei volumi Kubernetes utilizzando il nome del driver e del provisioner: filestore.csi.storage.gke.io.

Disabilita il driver CSI Filestore

Puoi disattivare il driver CSI di Filestore su un cluster Autopilot o Standard esistente utilizzando Google Cloud CLI o la console Google Cloud .

gcloud

gcloud container clusters update CLUSTER_NAME \
    --update-addons=GcpFilestoreCsiDriver=DISABLED \
    --region REGION

Sostituisci i seguenti valori:

  • CLUSTER_NAME: il nome del cluster esistente.
  • REGION: la regione del cluster (ad esempio, us-central1).

Console

  1. Nella Google Cloud console, vai al menu Google Kubernetes Engine.

    Vai a Google Kubernetes Engine

  2. Nell'elenco dei cluster, fai clic sul nome del cluster da modificare.

  3. Nella sezione Funzionalità, accanto al campo Driver CSI Filestore, fai clic su Modifica driver CSI Filestore.

  4. Deseleziona la casella di controllo Abilita driver CSI Filestore.

  5. Fai clic su Salva modifiche.

Accedere alle istanze Filestore preesistenti utilizzando il driver CSI Filestore

Questa sezione descrive la procedura tipica per utilizzare un volume Kubernetes per accedere alle istanze Filestore preesistenti utilizzando il driver CSI Filestore in GKE:

Crea un PersistentVolume e un PersistentVolumeClaim per accedere all'istanza

  1. Crea un file manifest come quello mostrato nell'esempio seguente e chiamalo 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
          protocol: FILESYSTEM_PROTOCOL
      claimRef:
        name: PVC_NAME
        namespace: NAMESPACE
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: PVC_NAME
      namespace: NAMESPACE
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: ""
      resources:
        requests:
          storage: 1Ti
    
  2. Per creare le risorse PersistentVolumeClaim e PersistentVolume in base al file manifest preprov-filestore.yaml, esegui questo comando:

    kubectl apply -f preprov-filestore.yaml
    

Per specificare il protocollo del file system NFSv4.1, imposta il campo protocol su NFS_V4_1 nel campo volumeAttributes di un oggetto PersistentVolume. Per utilizzare il protocollo del file system NFSv3, imposta il campo protocol su NFS_V3 o ometti il campo protocol.

Quindi, procedi a creare un deployment che utilizza il volume.

Crea un volume utilizzando il driver CSI Filestore

Le sezioni seguenti descrivono la procedura tipica per l'utilizzo di un volume Kubernetes supportato da un driver CSI Filestore in GKE:

Crea una StorageClass

Dopo aver abilitato il driver CSI Filestore, GKE installa automaticamente le seguenti StorageClasses per il provisioning delle istanze Filestore:

Ogni StorageClass è disponibile solo nei cluster GKE in esecuzione con i rispettivi numeri di versione GKE supportati. Per un elenco delle versioni supportate richieste per ogni livello di servizio, consulta Requisiti.

Puoi trovare il nome di StorageClass installato eseguendo questo comando:

kubectl get sc

Puoi anche installare un StorageClass diverso che utilizza il driver CSI di Filestore aggiungendo filestore.csi.storage.gke.io nel campo provisioner.

Filestore deve sapere su quale rete creare la nuova istanza. Le StorageClass installate automaticamente utilizzano la rete predefinita creata per i cluster GKE. Se hai eliminato questa rete o vuoi utilizzarne una diversa, devi creare una nuova StorageClass come descritto nei passaggi seguenti. In caso contrario, le StorageClass installate automaticamente non funzioneranno.

  1. Salva il seguente manifest come 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
    

    Dal manifest, considera la seguente configurazione dei parametri:

    • Se imposti volumeBindingMode su Immediate, il provisioning del volume può iniziare immediatamente. Ciò è possibile perché le istanze Filestore sono accessibili da qualsiasi zona. Pertanto, GKE non ha bisogno di conoscere la zona in cui è pianificato il pod, a differenza del disco permanente Compute Engine. Se impostato su WaitForFirstConsumer, GKE inizia il provisioning solo dopo la pianificazione del pod. Per ulteriori informazioni, vedi VolumeBindingMode.
    • Qualsiasi livello Filestore supportato può essere specificato nel parametro tier (ad esempio, BASIC_HDD, BASIC_SSD, ZONAL o ENTERPRISE).
    • Il parametro network può essere utilizzato durante il provisioning delle istanze Filestore su VPC non predefiniti. I VPC non predefiniti richiedono la configurazione di regole firewall speciali.
    • Il parametro protocol può essere utilizzato per impostare il protocollo del file system dell'istanza Filestore. Può assumere i seguenti valori: NFS_V3 (predefinito) e NFS_V4_1. Il protocollo predefinito è NFS_V3.
  2. Per creare una risorsa StorageClass basata sul file manifest filestore-example-class.yaml, esegui questo comando:

    kubectl create -f filestore-example-class.yaml
    

Se vuoi utilizzare Filestore su una rete VPC condivisa, consulta Creare una StorageClass quando utilizzi il driver CSI Filestore con il VPC condiviso.

Usa un oggetto PersistentVolumeClaim per accedere al volume

Puoi creare una risorsa PersistentVolumeClaim che fa riferimento a StorageClass del driver CSI Filestore.

Puoi utilizzare un StorageClass preinstallato o personalizzato.

Il seguente file manifest di esempio crea un PersistentVolumeClaim che fa riferimento a StorageClass denominato filestore-example.

  1. Salva il seguente file manifest come pvc-example.yaml:

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: podpvc
    spec:
      accessModes:
      - ReadWriteMany
      storageClassName: filestore-example
      resources:
        requests:
          storage: 1Ti
    
  2. Per creare una risorsa PersistentVolumeClaim basata sul file manifest pvc-example.yaml, esegui questo comando:

    kubectl create -f pvc-example.yaml
    

Crea un deployment che utilizzi il volume

Il seguente manifest di Deployment utilizza la risorsa PersistentVolume denominata pvc-example.yaml.

Più pod possono condividere la stessa risorsa PersistentVolumeClaim.

  1. Salva il seguente manifest come filestore-example-deployment.yaml:

    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: