Installazione di un driver Container Storage Interface

Questa pagina spiega come installare uno spazio di archiviazione Container Storage Interface (CSI) nei cluster creati mediante Google Distributed Cloud (solo software) per VMware.

Panoramica

CSI è un'API open standard che consente a Kubernetes di esporre spazi 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 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 l'uso di tecnologie di archiviazione quali snapshot e ridimensionamento.

Per utilizzare un driver CSI, devi creare un cluster Kubernetes StorageClass. 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 datastore vSphere utilizzando vsphereVolume conducente. 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 servizi di archiviazione sviluppano i propri driver CSI e sono responsabili fornendo istruzioni per l'installazione. In casi semplici, l'installazione potrebbe prevede il deployment di manifest nei cluster. Consulta l'elenco di CSI driver del documentazione CSI.

Verifica dell'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:

  1. Crea un oggetto StorageClass Kubernetes che fa riferimento al driver nel campo provisioner.

  2. Per eseguire il provisioning dello spazio di archiviazione, puoi:

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 parametri specifici del conducente fornito all'oggetto StorageClass, incluso il nome del provisioner.
  • Devi denominare l'oggetto StorageClass in base alle sue proprietà, anziché dopo il e il nome del driver o dell'appliance specifica. 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: fare riferimento a StorageClass in uno StatefulSet

L'esempio seguente illustra come definire un driver CSI in un oggetto StorageClass e quindi fai riferimento a StorageClass in uno StatefulSet carico di lavoro. Nell'esempio si presuppone che il driver sia già stato installato in un cluster Kubernetes.

Di seguito è riportato un semplice oggetto StorageClass denominato premium-rwo che utilizza un driver CSI fittizio, 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 Kubernetes fornisce uno spazio di archiviazione stabile mediante PersistentVolume (PV). Kubernetes chiama il provisioner definito in StorageClass per creare un nuovo volume di archiviazione. In questo caso, Kubernetes chiama l'oggetto csi.example.com fittizio 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