部署示例应用程序并验证 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/
-
(可选)默认情况下,
文件预置manifests/storageclass.yaml
gp2
Amazon EBS 卷。要改用gp3
卷,请将type: gp3
添加到
。manifests/storageclass.yaml
echo "parameters: type: gp3" >> manifests/storageclass.yaml
-
从
目录部署manifests
ebs-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。几分钟后,
app
Pod 的状态变为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-06fad4858a5a
4Gi RWO Delete Bound default/ebs-claim ebs-sc 30s -
描述持久性卷。将
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
的值。 -
验证 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/