Implantar uma aplicação de exemplo - Amazon EKS

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 (Provisionamento de volume dinâmico) do repositório do GitHub Amazon EBS Container Storage Interface (CSI) driver (driver de Container Storage Interface [CSI] do Amazon EBS) para consumir um volume do Amazon EBS provisionado de modo dinâmico.

  1. 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
  2. Navegue até o diretório de exemplo dynamic-provisioning.

    cd aws-ebs-csi-driver/examples/kubernetes/dynamic-provisioning/
  3. (Opcional) O arquivo manifests/storageclass.yaml provisiona volumes gp2 do Amazon EBS por padrão. Para usar volumes gp3 em vez disso, adicione type: gp3 a manifests/storageclass.yaml.

    echo "parameters: type: gp3" >> manifests/storageclass.yaml
  4. Implante a classe de armazenamento ebs-sc, a declaração de volume persistente ebs-claim e a aplicação de exemplo app do diretório manifests.

    kubectl apply -f manifests/
  5. 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 Mode na documentação do Kubernetes.

  6. Observe os Pods no namespace padrão. Depois de alguns minutos, o status do Pod app é alterado para Running.

    kubectl get pods --watch

    Insira Ctrl+C para retornar a um prompt de shell.

  7. 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
  8. Descreva o volume persistente. Substitua pvc-37717cd6-d0dc-11e9-b17f-06fad4858a5a pelo valor da saída da etapa anterior.

    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.

  9. 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
    [...]
  10. Ao terminar, exclua os recursos para essa aplicação de exemplo.

    kubectl delete -f manifests/