部署示例应用程序并验证 CSI 驱动程序是否正常运行 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

部署示例应用程序并验证 CSI 驱动程序是否正常运行

您可以使用示例应用程序测试 CSI 驱动程序功能。本主题展示了一个示例,但您还可以执行以下操作:

  • 部署使用外部快照创建卷快照的示例应用程序。有关更多信息,请参阅 GitHub 上的卷快照

  • 部署使用卷大小的示例应用程序。有关更多信息,请参阅 GitHub 上的调整卷大小

此过程利用来自 Amazon EBS 容器存储接口 (CSI) 驱动程序 GitHub 存储库的动态卷配置示例,使用动态预置的 Amazon EBS 卷。

  1. Amazon EBS 容器存储接口 (CSI) 驱动程序 GitHub 存储库克隆到您的本地系统。

    git clone https://github.com/kubernetes-sigs/aws-ebs-csi-driver/blob/master/deploy/kubernetes/overlays/stable/ecr/kustomization.yaml
  2. 导航到 dynamic-provisioning 示例目录。

    cd aws-ebs-csi-driver/examples/kubernetes/dynamic-provisioning/
  3. manifests 目录部署 ebs-sc 存储类、ebs-claim 持久性卷声明和 app 示例应用程序。

    kubectl apply -f manifests/
  4. 描述 ebs-sc 存储类。

    kubectl describe storageclass ebs-sc

    输出示例如下。

    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>
    注意

    存储类使用 WaitForFirstConsumer 卷绑定模式。这意味着,在 pod 进行持久性卷声明之前,不会动态预置卷。有关更多信息,请参阅 Kubernetes 文档中的卷绑定模式

  5. 查看默认命名空间中的 pods。几分钟后,app pod 的状态变为 Running

    kubectl get pods --watch

    输入 Ctrl+C 以返回到 Shell 提示符。

  6. 列出默认命名空间中的持久性卷。查找具有 default/ebs-claim 声明的持久性卷。

    kubectl get pv

    输出示例如下。

    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
  7. 描述持久性卷。将 pvc-37717cd6-d0dc-11e9-b17f-06fad4858a5a 替换为上一步的输出值。

    kubectl describe pv pvc-37717cd6-d0dc-11e9-b17f-06fad4858a5a

    输出示例如下。

    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>

    Amazon EBS 卷 ID 是之前输出中 VolumeHandle 的值。

  8. 验证 pod 是否将数据写入卷。

    kubectl exec -it app -- cat /data/out.txt

    输出示例如下。

    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 ...
  9. 完成后,请删除此示例应用程序的资源。

    kubectl delete -f manifests/