Configurazione della risorsa StorageClass predefinita

Questa pagina mostra come impostare l'oggetto StorageClass predefinito per un cluster Anthos sul cluster VMware (GKE on-prem). Vedi anche Spazio di archiviazione.

Panoramica

I cluster Anthos su VMware possono integrarsi con l'archiviazione a blocchi o di file utilizzando uno dei seguenti meccanismi:

Quando crei un cluster, Cluster Anthos su VMware crea un StorageClass Kubernetes denominato standard. Si tratta dell'oggetto StorageClass predefinito per il cluster.

Per visualizzare informazioni dettagliate su standardClasse archiviazione, inserisci il seguente comando:

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

dove [CLUSTER_KUBECONFIG] è il percorso del file kubeconfig per il cluster.

Nell'output puoi vedere che il nome dell'oggetto StorageClass è standard. Puoi anche vedere l'annotazione storageclass.kubernetes.io/is-default-class: "true". Questa annotazione identifica il valore StorageClass denominato standard come StorageClass predefinito.

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

Il cluster può avere diversi oggetti StorageClass, ma solo uno di loro può avere l'annotazione storageclass.kubernetes.io/is-default-class: "true", che a sua volta può essere l'oggetto StorageClass predefinito.

Nell'output precedente, puoi anche vedere che il provisioner è kubernetes.io/vSphere-volume. È il provisioner che interviene quando un client richiede uno spazio di archiviazione della classe standard.

Oggetto StorageClass predefinito

Quando richiedi l'archiviazione, puoi specificare un oggetto StorageClass. Se non specifichi un valore di StorageClass, viene utilizzato il valore predefinito StorageClass. Supponi, ad esempio, di creare un oggetto PersistentVolumeClaim che non specifica un oggetto StorageClass. Il controller del volume soddisferà la richiesta in base alla classe di archiviazione predefinita.

Modifica della classe di archiviazione predefinita

In qualità di amministratore del cluster, potresti voler cambiare la classe di archiviazione predefinita. Dopodiché tutte le richieste di archiviazione che non specificano un oggetto StorageClass verranno completate in base al valore di StorageClass scelto. Questa sezione illustra i passaggi per modificare l'impostazione predefinita.

Eseguire il deployment di un nuovo sistema di archiviazione

Esegui il deployment di un nuovo sistema di archiviazione ed eventuali componenti software per integrare il nuovo meccanismo di archiviazione con un cluster Kubernetes. Ad esempio, potrebbe essere necessario installare un driver CSI nel cluster.

Questo passaggio dipende dal fornitore di spazio di archiviazione utilizzato. Per i driver CSI, i fornitori devono fornire istruzioni per il deployment del proprio driver CSI in un cluster Kubernetes. La documentazione di un driver CSI deve includere anche i parametri specifici del driver che fornisci in StorageClass, tra cui il nome del provisioner.

Quando crei un oggetto StorageClass per la nuova appliance, devi assegnare un nome alla classe StorageClass in base alle relative proprietà (ad esempio "fast" o "quotty-replicated&quot";), anziché al nome del driver o dell'appliance specifica. In questo modo, sarà più semplice avere criteri di archiviazione coerenti tra cluster e ambienti.

Rimuovi l'annotazione predefinita da standard StorageClass

Per aprire il manifest di StorageClass di standard in un editor di testo, inserisci il seguente comando:

kubectl --kubeconfig [CLUSTER_KUBECONFIG] edit storageclass standard

Rimuovi l'annotazione storageclass.kubernetes.io/is-default-class: "true" nell'editor di testo. Chiudi l'editor di testo.

Per verificare che l'annotazione sia stata rimossa, inserisci il seguente comando:

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

Creazione di un nuovo oggetto StorageClass

Crea un manifest per un nuovo oggetto StorageClass. Includi l'annotazione storageclass.kubernetes.io/is-default-class: "true". Ad esempio:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
  ...
  name: my-storage-class
  ...
parameters:
  ...
provisioner: [MY_PROVISIONER]
...

Salva il manifest come file YAML e crea la nuova classe StorageClass:

kubectl --kubeconfig [CLUSTER_KUBECONFIG] apply -f [MANIFEST_FILE]

dove [MANIFEST_FILE] è il percorso del nuovo file manifest StorageClass.

Passaggi successivi