Questa pagina spiega come installare un driver di archiviazione di Container Storage Interface (CSI) per i cluster Anthos su Bare Metal.
Panoramica
Cluster Anthos on bare metal è compatibile con i driver Container Storage Interface (CSI) v1.0. CSI è un'API standard aperta supportata da molti dei principali fornitori di spazio di archiviazione che consentono a Kubernetes di esporre sistemi di archiviazione arbitrari ai carichi di lavoro containerizzati.
I volumi Kubernetes sono gestiti da driver di archiviazione specifici del fornitore, che sono stati storicamente compilati nei programmi binari di 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 che non è supportato in modo nativo da Kubernetes. Inoltre, CSI consente l'utilizzo di funzionalità di archiviazione moderne, come snapshot e ridimensionamento.
Per utilizzare un driver CSI, devi creare un oggetto StorageClass Kubernetes. Hai impostato il driver CSI come provisioner per StorageClass. Quindi, puoi impostare StorageClass come cluster predefinito del cluster o configurare i tuoi carichi di lavoro per utilizzare StorageClass (esempio di StatefulSet).
Installa il driver CSI di un fornitore
I fornitori di spazio di archiviazione sviluppano i propri driver CSI e sono responsabili delle istruzioni di installazione. In casi semplici, l'installazione potrebbe coinvolgere solo il deployment dei manifest nei cluster. Consulta l'elenco dei driver CSI nella documentazione di CSI.
Per l'archiviazione in produzione, consigliamo di installare un driver CSI da un partner di archiviazione Anthos Ready.
Verificare l'installazione del driver
Dopo aver installato un driver CSI, puoi verificare l'installazione eseguendo questo comando:
kubectl get csinodes -o jsonpath='{range .items[*]} \
{.metadata.name}{": "} {range .spec.drivers[*]} {.name}{"\n"} {end}{end}'
Utilizzare un driver CSI
Per utilizzare un driver CSI:
Creare un StorageClass Kubernetes che faccia riferimento al driver nel suo campo
provisioner
.Per eseguire il provisioning dello spazio di archiviazione, puoi:
- Fai riferimento a StorageClass nella specifica
volumeClaimTemplates
per un oggetto StatefulSet. - Impostalo come valore StorageClass predefinito del cluster.
- Fai riferimento a StorageClass nella specifica
Considerazioni sulle classi di archiviazione supportate da un driver CSI
Quando crei un oggetto StorageClass, considera quanto segue:
- La documentazione del driver CSI deve includere i parametri specifici del driver che fornisci nella classe StorageClass, incluso il nome del provisioner.
- Devi assegnare un nome alla classe StorageClass anziché alle relative proprietà, anziché al nome del driver o dell'appliance specifico dietro. Denominare StorageClass dopo le sue proprietà ti consente di creare StorageClass con lo stesso nome in più cluster e ambienti, e consente alle tue applicazioni di ottenere lo spazio di archiviazione con le stesse proprietà su più cluster.
Esempio: fa riferimento a StorageClass in uno StatefulSet
L'esempio seguente mostra come definire un driver CSI in un oggetto StorageClass e fare riferimento a StorageClass in un carico di lavoro 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 fittizio, csi.example.com
, come suo provisioning:
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 a StorageClass nella specifica volumeClaimTemplates
di uno StatefulSet.
Quando fai riferimento a un oggetto StorageClass nella specifica volumeClaimTemplates
di uno StatefulSet, Kubernetes fornisce spazio di archiviazione stabile tramite oggetti PersistentVolume.
Kubernetes chiama il provisioner definito in StorageClass per creare un nuovo volume di archiviazione. In questo caso, Kubernetes chiama il fornitore fittizio csi.example.com
, che richiama l'API del provider, per creare un volume. Una volta eseguito il provisioning del
volume, Kubernetes crea automaticamente un PV per rappresentare lo
spazio di archiviazione.
Ecco un semplice StatefulSet che fa riferimento allo spazio di archiviazione di StorageClass:
stato.setful.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: k8s.gcr.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: premium-rwo # This field references the existing StorageClass
Passaggi successivi
- Scopri di più su Cluster Anthos relativi all'archiviazione su Anthos Bare Metal
- Imposta un valore StorageClass predefinito per il tuo cluster