Configurazione della risorsa StorageClass predefinita

Questa pagina mostra come impostare il valore predefinito di StorageClass per un cluster Anthos sul cluster VMware (GKE On-Prem). Vedi anche 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, i cluster Anthos su VMware creano un oggetto StorageClass di Kubernetes denominato standard. Questo è l'oggetto StorageClass predefinito per il cluster.

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

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 della classe di archiviazione è standard. Puoi anche visualizzare l'annotazione storageclass.kubernetes.io/is-default-class: "true". Questa annotazione identifica l'oggetto StorageClass denominato standard come StorageClass predefinita.

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 questi può avere l'annotazione storageclass.kubernetes.io/is-default-class: "true" e quindi essere l'oggetto StorageClass predefinito.

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

Oggetto StorageClass predefinito

Quando richiedi uno spazio di archiviazione, puoi specificare un oggetto StorageClass. Se non specifichi un oggetto 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 risponderà alla richiesta in base allo spazio di archiviazione predefinito.

Modifica dell'oggetto StorageClass predefinito

In qualità di amministratore del cluster, puoi modificare la classe di archiviazione predefinita. Dopodiché tutte le richieste di archiviazione che non specificano un valore StorageClass verranno completate in base al valore di StorageClass scelto. Questa sezione fornisce 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 che stai utilizzando. Per i driver CSI, i fornitori devono fornire istruzioni per il deployment dei loro driver CSI in un cluster Kubernetes. La documentazione di un driver CSI deve includere anche i parametri specifici del driver che fornisci in StorageClass, incluso il nome del provisioner.

Quando crei un oggetto StorageClass per il tuo nuovo appliance, devi assegnare un nome all'oggetto StorageClass in base alle sue proprietà (ad esempio "fast" o "high-replicated"), invece che al nome del driver o dell'appliance specifica dietro al nome. In questo modo, sarà più semplice avere criteri di archiviazione coerenti nei cluster e negli ambienti.

Rimuovi l'annotazione predefinita da standard StorageClass

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

kubectl --kubeconfig [CLUSTER_KUBECONFIG] edit storageclass standard

Nell'editor di testo, rimuovi l'annotazione storageclass.kubernetes.io/is-default-class: "true". 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 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 il nuovo StorageClass:

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

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

Passaggi successivi