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:
- Archiviazione VMWare vSphere
- Plug-in del volume ad albero di Kubernetes
- Container Storage Interface (CSI)
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 standard
Classe 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.