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:
- Archiviazione VMWare vSphere
- Plug-in di volume interni a Kubernetes
- Container Storage Interface (CSI)
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 standard
Classe 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"";), 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.