Ajudar a melhorar esta página
Quer contribuir para este guia do usuário? Role até o final desta página e selecione Editar esta página no GitHub. Suas contribuições ajudarão a tornar nosso guia do usuário melhor para todos.
Implantar uma aplicação de exemplo
É possível testar a funcionalidade do driver CSI com uma aplicação de amostra. Este tópico mostra um exemplo, mas também é possível pode fazer o seguinte:
-
Implantar uma aplicação de amostra que utiliza o snapshotter externo para criar snapshots de volume. Para obter mais informações, consulte Volume Snapshots
(Snapshots de volumes), no GitHub. -
Implantar uma aplicação de amostra que utiliza redimensionamento de volume. Para obter mais informações, consulte Volume Resizing
(Redimensionamento de volume) no GitHub.
Este procedimento usa o exemplo de Dynamic Volume Provisioning
-
Clone o repositório do GitHub Amazon EBS Container Storage Interface (CSI) driver
(driver de Container Storage Interface [CSI] do Amazon EBS) no sistema local. git clone https://github.com/kubernetes-sigs/aws-ebs-csi-driver.git
-
Navegue até o diretório de exemplo
dynamic-provisioning
.cd aws-ebs-csi-driver/examples/kubernetes/dynamic-provisioning/
-
(Opcional) O arquivo
provisiona volumesmanifests/storageclass.yaml
gp2
do Amazon EBS por padrão. Para usar volumesgp3
em vez disso, adicionetype: gp3
a
.manifests/storageclass.yaml
echo "parameters: type: gp3" >> manifests/storageclass.yaml
-
Implante a classe de armazenamento
ebs-sc
, a declaração de volume persistenteebs-claim
e a aplicação de exemploapp
do diretório
.manifests
kubectl apply -f manifests/
-
Descreva a classe de armazenamento
ebs-sc
.kubectl describe storageclass ebs-sc
Veja um exemplo de saída abaixo.
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
A classe de armazenamento usa o modo de associação de volume
WaitForFirstConsumer
. Isso significa que os volumes não são provisionados de maneira dinâmica até que um Pod faça uma declaração de volume persistente. Para obter mais informações, consulte Volume Binding Modena documentação do Kubernetes. -
Observe os Pods no namespace padrão. Depois de alguns minutos, o status do Pod
app
é alterado paraRunning
.kubectl get pods --watch
Insira
Ctrl
+C
para retornar a um prompt de shell. -
Liste os volumes persistentes no namespace padrão. Procure um volume persistente com a declaração
default/ebs-claim
.kubectl get pv
Veja um exemplo de saída abaixo.
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 -
Descreva o volume persistente. Substitua
pvc-
pelo valor da saída da etapa anterior.37717cd6-d0dc-11e9-b17f-06fad4858a5a
kubectl describe pv pvc-
37717cd6-d0dc-11e9-b17f-06fad4858a5a
Veja um exemplo de saída abaixo.
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>O ID do volume do Amazon EBS é o valor do
VolumeHandle
no resultado anterior. -
Verifique se o Pod está gravando dados no volume.
kubectl exec -it app -- cat /data/out.txt
Veja um exemplo de saída abaixo.
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 [...]
-
Ao terminar, exclua os recursos para essa aplicação de exemplo.
kubectl delete -f manifests/