在Kubernetes集群中,存储资源的管理常常是运维人员面临的一大挑战,尤其是当应用需要高性能ESSD云盘时,手动创建、绑定与管理磁盘不仅效率低下,也缺乏自动化。那么,如何让K8S自动完成这些琐碎工作?答案就是通过StorageClass实现动态供应(Dynamic Provisioning)。
下面快速拆解核心流程:首先定义一个StorageClass,在其中声明磁盘类型、地域与可用区参数,然后让PersistentVolumeClaim(PVC)引用该StorageClass。这样一来,当Pod启动时,Kubernetes会自动调用阿里云API创建对应的ESSD云盘,并挂载到Pod内的指定挂载点。接下来直接看具体操作。
创建StorageClass
配置StorageClass时需注意以下几个关键参数:
provisioner字段必须设置为alicloud/disk,以调用阿里云盘服务。type参数设置为cloud_essd,明确指定使用ESSD云盘。regionid与zoneid需与集群所在的地域和可用区一致,例如本例采用杭州地域的b可用区。reclaimPolicy设为Retain,确保PVC删除后云盘不会被自动删除,从而保留数据。
kind: StorageClass
apiVersion: storage.k8s.io/v1beta1
metadata:
name: alicloud-disk-essd-hangzhou-b
provisioner: alicloud/disk
parameters:
type: cloud_essd
regionid: cn-hangzhou
zoneid: cn-hangzhou-b
reclaimPolicy: Retain
创建Pod使用ESSD
定义PVC时,storageClassName 必须与上一步创建的StorageClass名称保持一致,即 alicloud-disk-essd-hangzhou-b。本例申请20Gi ESSD存储,访问模式采用 ReadWriteOnce(单节点读写)。随后在Pod中挂载该PVC至容器内的 /mnt 目录,并使用nginx镜像作为演示。
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: disk-essd
spec:
accessModes:
- ReadWriteOnce
storageClassName: alicloud-disk-essd-hangzhou-b
resources:
requests:
storage: 20Gi
---
kind: Pod
apiVersion: v1
metadata:
name: disk-pod-essd
spec:
containers:
- name: disk-pod
image: nginx
volumeMounts:
- name: disk-pvc
mountPath: "/mnt"
restartPolicy: "Never"
volumes:
- name: disk-pvc
persistentVolumeClaim:
claimName: disk-essd

部署完成后,Kubernetes会自动调用阿里云API创建一块ESSD云盘,并将其挂载到Pod的 /mnt 目录下。整个过程无需手动登录云控制台操作,这正是StorageClass动态供应带来的自动化便利。在实际生产环境中,可根据业务需求调整 reclaimPolicy、磁盘容量等参数,但核心逻辑与上述步骤一致。
