临时存储可用于存储缓存等临时数据,在创建Deployment时,您可以通过PVC模板VolumeClaimTemplate
为每个Pod自动创建临时存储,在删除和减少Pod时自动删除之前创建的PVC和PV。本文介绍如何使用Deployment创建临时存储以及验证存储会随着Pod的缩容而被删除。
前提条件
已创建ACK集群,且集群为1.22及以上版本。具体操作,请参见创建Kubernetes托管版集群。
该功能暂不支持ACK Serverless集群。
使用场景
应用需要临时存储来保存应用中间数据,但无需持久化。
应用写日志,日志吞吐量很大,使用临时非共享存储可以保证存储性能。
创建Deployment临时存储
创建无状态服务Deployment时,您可以通过VolumeClaimTemplate
自动创建PVC和PV。VolumeClaimTemplate
表示一类PVC的模板,系统会根据无状态服务Deployment配置的replicas数量,创建相应数量的PVC,这些PVC除了名称不一样,其他配置均相同。
使用以下示例代码创建无状态服务Deployment ,并且该Deployment包含2个Pod。
该使用方式对于Deployment、StatefulSet、Pod均适用。
参数
说明
replicas
本示例设置为2,表示创建2个Pod。
volumeMounts.mountPath
云盘在容器中挂载的位置。
accessModes
访问模式。
ephemeral
声明当前存储为临时存储。
storageClassName
本示例配置为alicloud-disk-topology-alltype,表示依次尝试使用cloud_essd、cloud_ssd、cloud_efficiency类型的云盘。
执行以下命令,部署Deployment服务。
kubectl create -f ephemeral-example.yaml
执行以下命令,查看已部署的Pod。
kubectl get pod
预期输出:
NAME READY STATUS RESTARTS AGE ephemeral-example-65d6c5fb87-5jbjf 1/1 Running 0 4m55s ephemeral-example-65d6c5fb87-jgt8x 1/1 Running 0 4m55s
执行以下命令,查看PVC。
kubectl get pvc
预期输出:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE ephemeral-example-65d6c5fb87-5jbjf-scratch-volume Bound d-2ze7cjui6henh7z61393 30Gi RWO alicloud-disk-topology-alltype 5m42s ephemeral-example-65d6c5fb87-jgt8x-scratch-volume Bound d-2zehi4gnz4btacaf8lh2 30Gi RWO alicloud-disk-topology-alltype 5m42s
验证PVC和PV会随着Pod的缩容而删除
执行以下命令,缩容Pod为1。
kubectl scale deploy ephemeral-example --replicas=1 deployment.apps/ephemeral-example scaled
执行以下命令,查看Pod的数量。
kubectl get pod
预期输出:
NAME READY STATUS RESTARTS AGE ephemeral-example-65d6c5fb87-5jbjf 1/1 Terminating 0 7m13s ephemeral-example-65d6c5fb87-jgt8x 1/1 Running 0 7m13s
执行以下命令,查看PVC的数量。
kubectl get pvc
预期输出:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE ephemeral-example-65d6c5fb87-jgt8x-scratch-volume Bound d-2zehi4gnz4btacaf8lh2 30Gi RWO alicloud-disk-topology-alltype 8m1s
预期输出表明,PVC随着Pod的缩容而被删除。
相关文档
如需监控临时存储的使用情况,请参见使用storage-operator组件监控集群侧存储资源。
关于云盘的持久化存储,请参见云盘存储卷。