Aiutaci a migliorare questa pagina
Vuoi contribuire a questa guida per l'utente? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Implementare un'applicazione di esempio
È possibile testare la funzionalità del driver CSI con un'applicazione di esempio. In questo argomento viene illustrata una procedura, ma è anche possibile eseguire le operazioni seguenti:
-
Implementare un'applicazione di esempio che utilizza il dispositivo esterno di acquisizione snapshot per creare snapshot del volume. Per ulteriori informazioni, consulta Snapshot del volume
su GitHub. -
Implementare un'applicazione di esempio che utilizza il ridimensionamento del volume. Per ulteriori informazioni, consulta Ridimensionamento del volume
su GitHub.
Questa procedura utilizza l'esempio di provisioning di volumi dinamici
-
Clona il repository GitHub del driver Container Storage Interface (CSI) per Amazon EBS
nel sistema locale. git clone https://github.com/kubernetes-sigs/aws-ebs-csi-driver.git
-
Passare alla directory di esempio
dynamic-provisioning
.cd aws-ebs-csi-driver/examples/kubernetes/dynamic-provisioning/
-
(Facoltativo) Per impostazione predefinita il file
effettua il provisioning dei volumi Amazon EBSmanifests/storageclass.yaml
gp2
. Per utilizzare invece i volumigp3
, aggiungitype: gp3
a
.manifests/storageclass.yaml
echo "parameters: type: gp3" >> manifests/storageclass.yaml
-
Implementare la classe di storage
ebs-sc
, la dichiarazione di volume persistenteebs-claim
e l'applicazione di esempioapp
dalla directory
.manifests
kubectl apply -f manifests/
-
Descrivere la classe di storage
ebs-sc
.kubectl describe storageclass ebs-sc
Di seguito viene riportato un output di esempio:
Name: ebs-sc IsDefaultClass: No Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{},"name":"ebs-sc"},"provisioner":"ebs.csi.aws.com","volumeBindingMode":"WaitForFirstConsumer"} Provisioner: ebs.csi.aws.com Parameters: <none> AllowVolumeExpansion: <unset> MountOptions: <none> ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: <none>
Nota
La classe di storage utilizza la modalità di associazione di volumi
WaitForFirstConsumer
. Ciò significa che i volumi non vengono assegnati dinamicamente finché un Pod non effettua una dichiarazione di volume persistente. Per ulteriori informazioni, consulta la sezione Volume Binding Mode(Modalità di associazione dei volumi) nella documentazione Kubernetes. -
Controlla i Pods nello spazio dei nomi predefinito. Dopo pochi minuti, lo stato del pod Pod
app
cambia inRunning
.kubectl get pods --watch
Inserire
Ctrl
+C
per tornare a un prompt della shell. -
Elencare i volumi persistenti nello spazio dei nomi predefinito. Cercare un volume persistente con la richiesta
default/ebs-claim
.kubectl get pv
Di seguito viene riportato un output di esempio:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-
37717cd6-d0dc-11e9-b17f-06fad4858a5a
4Gi RWO Delete Bound default/ebs-claim ebs-sc 30s -
Descrivere il volume persistente. Sostituisci
pvc-
con il valore dell'output del passaggio precedente.37717cd6-d0dc-11e9-b17f-06fad4858a5a
kubectl describe pv pvc-
37717cd6-d0dc-11e9-b17f-06fad4858a5a
Di seguito viene riportato un output di esempio:
Name: pvc-
37717cd6-d0dc-11e9-b17f-06fad4858a5a
Labels: <none> Annotations: pv.kubernetes.io/provisioned-by: ebs.csi.aws.com Finalizers: [kubernetes.io/pv-protection external-attacher/ebs-csi-aws-com] StorageClass: ebs-sc Status: Bound Claim: default/ebs-claim Reclaim Policy: Delete Access Modes: RWO VolumeMode: Filesystem Capacity: 4Gi Node Affinity: Required Terms: Term 0: topology.ebs.csi.aws.com/zone in [region-code
] Message: Source: Type: CSI (a Container Storage Interface (CSI) volume source) Driver: ebs.csi.aws.com VolumeHandle:vol-0d651e157c6d93445
ReadOnly: false VolumeAttributes: storage.kubernetes.io/csiProvisionerIdentity=1567792483192
-8081-ebs.csi.aws.com Events: <none>L'ID volume Amazon EBS è il valore per
VolumeHandle
nell'output precedente. -
Verificare che il Pod scriva correttamente i dati nel volume.
kubectl exec -it app -- cat /data/out.txt
Di seguito viene riportato un output di esempio:
Wed May 5 16:17:03 UTC 2021 Wed May 5 16:17:08 UTC 2021 Wed May 5 16:17:13 UTC 2021 Wed May 5 16:17:18 UTC 2021 [...]
-
Al termine, eliminare le risorse per questa applicazione di esempio.
kubectl delete -f manifests/