部署示例应用程序并验证 CSI 驱动程序是否正常运行
您可以使用示例应用程序测试 CSI 驱动程序功能。本主题展示了一个示例,但您还可以执行以下操作:
此过程利用来自 Amazon EBS 容器存储接口 (CSI) 驱动程序
-
将 Amazon EBS 容器存储接口 (CSI) 驱动程序
GitHub 存储库克隆到您的本地系统。 git clone https://github.com/kubernetes-sigs/aws-ebs-csi-driver/blob/master/deploy/kubernetes/overlays/stable/ecr/kustomization.yaml -
导航到
dynamic-provisioning示例目录。cd aws-ebs-csi-driver/examples/kubernetes/dynamic-provisioning/ -
(可选)默认情况下,
文件预置mainfests/storageclass.yamlgp2Amazon EBS 卷。要改用gp3卷,请将type: gp3添加到。mainfests/storageclass.yamlecho "parameters: type: gp3" >> manifests/storageclass.yaml -
从
目录部署manifestsebs-sc存储类、ebs-claim持久性卷声明和app示例应用程序。kubectl apply -f manifests/ -
描述
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 文档中的卷绑定模式。 -
查看默认命名空间中的 pods。几分钟后,
apppod 的状态变为Running。kubectl get pods --watch输入
Ctrl+C以返回到 Shell 提示符。 -
列出默认命名空间中的持久性卷。查找具有
default/ebs-claim声明的持久性卷。kubectl get pv输出示例如下。
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-37717cd6-d0dc-11e9-b17f-06fad4858a5a4Gi RWO Delete Bound default/ebs-claim ebs-sc 30s -
描述持久性卷。将
pvc-替换为上一步的输出值。37717cd6-d0dc-11e9-b17f-06fad4858a5akubectl describe pv pvc-37717cd6-d0dc-11e9-b17f-06fad4858a5a输出示例如下。
Name: pvc-37717cd6-d0dc-11e9-b17f-06fad4858a5aLabels: <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-0d651e157c6d93445ReadOnly: false VolumeAttributes: storage.kubernetes.io/csiProvisionerIdentity=1567792483192-8081-ebs.csi.aws.com Events: <none>Amazon EBS 卷 ID 是之前输出中
VolumeHandle的值。 -
验证 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 ... -
完成后,请删除此示例应用程序的资源。
kubectl delete -f manifests/