Crea e utilizza classi di archiviazione nel runtime VM su Google Distributed Cloud

Questo documento è destinato ai proprietari di applicazioni e agli amministratori di piattaforma che eseguono GKE su Bare Metal. Questo documento mostra come creare e utilizzare classi di archiviazione per le VM che utilizzano VM Runtime su Google Distributed Cloud. Un StorageClass consente di definire diverse configurazioni di archiviazione per soddisfare le varie esigenze delle tue VM.

Prima di iniziare

Per completare questo documento, devi accedere al cluster GKE su Bare Metal versione 1.12.0 (anthosBareMetalVersion: 1.12.0) o successiva. Puoi usare qualsiasi tipo di cluster in grado di eseguire carichi di lavoro. Se necessario, prova GKE su Bare Metal su Compute Engine o consulta la panoramica sulla creazione dei cluster.

Panoramica delle classi di archiviazione

Puoi utilizzare un valore StorageClass per definire il tipo di archiviazione da rendere disponibile alle VM. Classi di archiviazione diverse potrebbero essere mappate a tipi diversi di hardware, file system o prestazioni di archiviazione. Puoi creare e utilizzare classi di archiviazione per supportare i carichi di lavoro di computing nel runtime VM su Google Distributed Cloud. Per ulteriori informazioni, consulta Classi di archiviazione.

Nella risorsa personalizzata per il runtime VM su Google Distributed Cloud è possibile definire un StorageClass predefinito. Se non definisci una classe specifica quando crei un VirtualMachineDisks,, viene utilizzato questo StorageClass predefinito. Nessun elemento StorageClass iniziale è configurato e impostato come predefinito. Nella sezione seguente scoprirai come impostare o aggiornare il valore predefinito di StorageClass.

Imposta o aggiorna il valore predefinito di StorageClass

Inizialmente, per GKE su Bare Metal con VM Runtime su Google Distributed Cloud non è configurato alcun valore StorageClass predefinito. Per creare un VirtualMachineDisk senza specificare un StorageClass, devi prima creare un StorageClass e poi impostarlo come predefinito.

Se vuoi impostare o aggiornare inizialmente il valore StorageClass predefinito che il runtime VM su Google Distributed Cloud utilizza quando crei una VirtualMachineDisk, aggiorna la risorsa personalizzata VMRuntime.

  1. Modifica la risorsa personalizzata VMRuntime:

    kubectl edit vmruntime
    
  2. Aggiungi o aggiorna la sezione spec.storage che specifica il valore predefinito StorageClass da utilizzare:

    apiVersion: vm.cluster.gke.io/v1
    kind: VMRuntime
    metadata:
      name: vmruntime
    spec:
      enabled: true
      storage:
        defaultStorageClass: STORAGE_CLASS_NAME
    ...
    

    Modifica STORAGE_CLASS_NAME con il nome della StorageClass predefinita che vuoi utilizzare. Se devi prima creare un StorageClass, consulta la sezione Creare un StorageClass.

  3. Salva e chiudi la risorsa personalizzata VMRuntime nell'editor.

    Il valore StorageClass specificato viene ora utilizzato quando crei un disco di una macchina virtuale e non specifichi un StorageClass. La seguente sezione mostra come creare un disco e utilizzare un oggetto StorageClass specifico.

    Le risorse VirtualMachineDisk esistenti non vengono aggiornate in modo da utilizzare il nuovo StorageClass specificato.

Utilizzo di un oggetto StorageClass specifico

Se non vuoi utilizzare il valore predefinito StorageClass quando crei una VirtualMachineDisk, utilizza il campo storageClassName per specificare un StorageClass diverso.

Per utilizzare un elemento StorageClass già definito e specifico quando crei una VirtualMachineDisk, procedi nel seguente modo:

  1. Crea un file manifest VirtualMachineDisk, ad esempio my-disk.yaml, nell'editor che preferisci:

    nano my-disk.yaml
    
  2. Copia e incolla il seguente manifest YAML:

    apiVersion: vm.cluster.gke.io/v1
    kind: VirtualMachineDisk
    metadata:
      name: DISK_NAME
    spec:
      size: 10Gi
      storageClassName: STORAGE_CLASS_NAME
    

    Sostituisci i seguenti valori:

    • DISK_NAME: il nome del disco.
    • STORAGE_CLASS_NAME: il StorageClass da utilizzare per il disco. Questo StorageClass deve esistere già. Se devi prima creare un StorageClass, consulta Creare un oggetto StorageClass.
  3. Salva e chiudi il manifest del disco nell'editor.

  4. Crea il disco utilizzando kubectl:

    kubectl apply -f my-disk.yaml
    

Configura profili di archiviazione

I profili di archiviazione forniscono opzioni di configurazione aggiuntive associate a ogni StorageClass. Queste opzioni di configurazione includono la modalità di accesso e la modalità volume da utilizzare per VirtualMachineDisks che usano StorageClass.

Senza un profilo di archiviazione configurato, i dischi utilizzano per impostazione predefinita la modalità di accesso ReadWriteOnce. Questa modalità di accesso non è sufficiente per i carichi di lavoro di produzione, poiché funzionalità come la migrazione live non funzionano. La modalità volume predefinita senza un profilo di archiviazione configurato è Filesystem.

Il runtime VM su Google Distributed Cloud genera automaticamente un profilo di archiviazione per ogni StorageClass in un cluster. Il profilo di archiviazione ha lo stesso nome del profilo StorageClass associato. L'output di esempio seguente mostra che il cluster ha quattro classi di archiviazione e profili associati:

  $ kubectl get storageprofiles

  NAME            AGE
  anthos-system   11d
  node-disk       11d
  standard        11d
  nfs             11d

Per modificare un profilo di archiviazione e cambiare la modalità di accesso o volume, svolgi i seguenti passaggi:

  1. Modifica la risorsa personalizzata StorageProfile per la modifica:

    kubectl edit storageprofile STORAGE_PROFILE_NAME
    

    Sostituisci STORAGE_PROFILE_NAME con il valore StorageProfile che vuoi modificare.

  2. Aggiungi una singola voce all'elenco spec.claimPropertySets di StorageProfile:

    apiVersion: cdi.kubevirt.io/v1beta1
    kind: StorageProfile
    metadata:
      name: nfs
    spec:
      claimPropertySets:
      - accessModes:
        - ACCESS_MODE
        volumeMode: VOLUME_MODE
    

    accessMode e volumeMode utilizzano i componenti Kubernetes sottostanti. I valori impostati dipendono dal driver di archiviazione utilizzato. Sostituisci i seguenti valori in base allo spazio di archiviazione che utilizzi:

    • ACCESS_MODE: la modalità di accesso che vuoi utilizzare. Se supportata dall'elemento StorageClass associato, la modalità di accesso preferita è ReadWriteMany.
      • I valori accettati includono ReadWriteOnce, ReadOnlyMany, ReadWriteMany e ReadWriteOncePod. Se non specificato, ReadWriteOnce viene utilizzato in base alle impostazioni predefinite del runtime VM su Google Distributed Cloud. Per ulteriori informazioni, consulta Modalità di accesso.
    • VOLUME_MODE: la modalità volume che vuoi utilizzare.
      • I valori accettati includono Filesystem e Block. Se non specificato, Filesystem viene utilizzato in base ai valori predefiniti di Kubernetes. Per ulteriori informazioni, consulta Modalità volume.
  3. Salva e chiudi la risorsa personalizzata StorageProfile nell'editor.

    Le impostazioni del profilo di archiviazione definite vengono utilizzate quando crei dischi virtuali. Le risorse VirtualMachineDisk esistenti non vengono aggiornate per utilizzare le impostazioni del profilo di archiviazione definite.

Passaggi successivi