Questa pagina spiega come installare un driver di archiviazione Container Storage Interface (CSI) nei cluster creati utilizzando Google Distributed Cloud (solo software) per VMware.
Panoramica
CSI è un'API open standard che consente a Kubernetes di esporre sistemi di archiviazione arbitrari ai carichi di lavoro containerizzati. Quando esegui il deployment di uno spazio di archiviazione compatibile con CSI a un cluster, quest'ultimo può connettersi direttamente a uno spazio di archiviazione dispositivo senza dover passare per lo spazio di archiviazione vSphere.
I volumi Kubernetes sono gestiti da driver di archiviazione specifici del fornitore, che hanno storicamente compilati in file binari Kubernetes. In precedenza, non era possibile utilizzare un driver di archiviazione non incluso in Kubernetes. L'installazione di un driver CSI aggiunge il supporto per un sistema di archiviazione non è supportato in modo nativo da Kubernetes. Inoltre, CSI consente di utilizzare funzionalità di archiviazione moderne, come snapshot e ridimensionamento.
Per utilizzare un driver CSI, devi creare un StorageClass Kubernetes. Imposti il driver CSI come provisioner per StorageClass. Poi potrai imposta il valore predefinito del cluster, o configurare i carichi di lavoro per l'utilizzo di StorageClass (esempio di StatefulSet).
Prima di iniziare
Per impostazione predefinita, Google Distributed Cloud utilizza i datastore vSphere con il driver integrato vsphereVolume. Inoltre, i driver integrati per NFS e iSCSI possono collegare montare volumi esistenti nei tuoi carichi di lavoro.
Installazione del driver CSI di un fornitore
I fornitori di soluzioni di archiviazione sviluppano i propri driver CSI e sono responsabili della fornitura delle istruzioni di installazione. In casi semplici, l'installazione potrebbe prevede il deployment di manifest nei tuoi cluster. Consulta l'elenco di CSI driver del documentazione CSI.
Verificare l'installazione di un driver
Dopo aver installato un driver CSI, puoi verificare l'installazione eseguendo il comando seguente comando:
kubectl get csidrivers --kubeconfig KUBECONFIG
Utilizzare un driver CSI
Per utilizzare un driver CSI:
Crea un StorageClass Kubernetes che fa riferimento al driver nel campo
provisioner
.Per eseguire il provisioning dello spazio di archiviazione, puoi:
- Fai riferimento a StorageClass nella specifica
volumeClaimTemplates
per un oggetto StatefulSet. - Impostalo come StorageClass predefinito del cluster.
- Fai riferimento a StorageClass nella specifica
Considerazioni sulle classi di archiviazione supportate da un driver CSI
Quando crei una classe di archiviazione, tieni presente quanto segue:
- La documentazione del driver CSI deve includere parametri specifici del conducente fornito all'oggetto StorageClass, incluso il nome del provisioner.
- Devi assegnare un nome a StorageClass in base alle sue proprietà, anziché al nome del driver o dell'appliance specifico sottostante. Denominazione di StorageClass dopo le sue proprietà consente di creare StorageClass con lo stesso nome in più cluster e ambienti e consente alle applicazioni di con le stesse proprietà nei vari cluster.
Esempio: fai riferimento a StorageClass in un StatefulSet
L'esempio seguente mostra come definire un driver CSI in un StorageClass e poi fare riferimento al StorageClass in un workload StatefulSet. L'esempio presuppone che il driver sia già stato installato nel cluster.
Di seguito è riportato un semplice oggetto StorageClass denominato premium-rwo
che utilizza un driver CSI immaginario,
csi.example.com
, come provisioner:
fast-sc.yaml
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: premium-rwo provisioner: csi.example.com # CSI driver parameters: # You provide vendor-specific parameters to this specification type: example-parameter # Be sure to follow the vendor's instructions datastore: my-datastore reclaimPolicy: Retain allowVolumeExpansion: true
Fai riferimento al valore di StorageClass nell'elemento volumeClaimTemplates
di uno StatefulSet
la specifica del container.
Quando fai riferimento a un oggetto StorageClass nell'elemento volumeClaimTemplates
di uno StatefulSet
specifica, Kubernetes fornisce spazio di archiviazione stabile tramite oggetti PersistentVolume (PV).
Kubernetes chiama il provisioner definito in StorageClass per creare un nuovo
volume di archiviazione. In questo caso, Kubernetes chiama il provider csi.example.com
immaginario, che chiama l'API del provider, per creare un volume. Dopo il
di un volume permanente, Kubernetes crea automaticamente un PV per rappresentare
archiviazione.
Ecco un semplice StatefulSet che fa riferimento a StorageClass:
statefulset.yaml
apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: registry.k8s.io/nginx-slim:0.8 volumeMounts: - name: www mountPath: /usr/share/nginx/html volumeClaimTemplates: # This is the specification in which you reference the StorageClass - metadata: name: www spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi storageClassName: fast # This field references the existing StorageClass
Passaggi successivi
- Scopri di più sui concetti di archiviazione di Google Distributed Cloud
- Imposta un oggetto StorageClass predefinito per il cluster