- 文档首页
容器服务
容器服务 VKE
用户指南
存储
本地存储卷
通过临时卷方式使用本地存储 LVM 卷
通过临时卷方式使用本地存储 LVM 卷
容器服务支持通过 CSI 使用本地存储,本文为您介绍如何通过临时卷方式使用本地存储 LVM 卷。
说明
【邀测·申请试用】本地存储相关的 csi-local 组件 和 存储感知调度 功能目前均处于邀测阶段,如需使用,请提交申请。 使用限制
- 需使用极速型 SSD 数据盘挂载到容器、镜像存储目录 /var/lib/containerd 和 /var/lib/kubelet。避免使用本地盘挂载到容器、镜像存储目录,否则,将不适用本地存储使用场景。
- 本场景依赖 3 个组件的安装和卸载存在顺序要求,请严格遵循下文介绍的顺序进行安装或卸载,否则将影响正常调度功能。
- 本地存储并非高可用存储卷,只适用于一些临时数据的保存及应用自带高可用的场景。
- LVM 类型的本地存储卷,不支持数据的跨节点迁移,不适合在高可用场景中使用。
- 已创建 Kubernetes 版本符合要求的容器集群。详情请参见 创建集群。
操作步骤
步骤一:安装和配置组件
使用本地存储需要依赖如下组件,请参考以下顺序依次安装和配置。
警告
- csi-local 组件依赖 snapshot-controller 组件,安装 csi-local 组件前确认 snapshot-controller 组件已安装。
- csi-local 组件必须与 scheduler-plugin 组件中的存储感知调度功能结合使用,开启存储感知调度功能前,请确保 snapshot-controller 和 csi-local 组件均已安装,否则会影响正常调度。
- 如需卸载 csi-local 组件,请关闭 scheduler-plugin 组件中的存储感知调度功能后再执行卸载操作,否则会影响正常调度。
- 在左侧导航栏中选择 集群,单击需要配置的目标集群。
- 选择 存储 页签,将鼠标移动到 snapshot-controller 和 csi-local 组件卡片上,单击 部署,依次安装组件。
-
- 选择 调度 页签,将鼠标移动到 scheduler-plugin 组件卡片上,单击 配置,并在配置弹窗中勾选 存储感知调度 配置项的 本地存储。
-
步骤二:配置本地盘类型的节点池
配置本地盘类型的节点池,本场景涉及的关键配置说明如下,其他配置项按需配置即可。详情请参见 创建节点池、创建托管节点池。 - 配置计算规格。选择支持本地盘的 ECS 实例类型。详情请参见 本地盘。
- 配置容器、镜像存储目录。使用极速型 SSD 数据盘挂载到容器、镜像存储目录 /var/lib/containerd 和 /var/lib/kubelet。
警告
请勿使用本地盘挂载到容器、镜像存储目录,否则,将不适用本地存储使用场景。
- 单击 添加数据盘,使用本地盘配置其他数据盘。本地数据盘支持 SSD 和 HDD 类型,不同 ECS 类型支持的数据盘类型不同,可根据实际需求选择。
-
- 自定义节点标签,用于初始化本地盘时筛选节点,例如csi-local: "i4ag"。
-
- 配置部署执行脚本,在节点中安装 lvm2,安装命令为apt-get install -y lvm2。
-
csi-local 组件安装成功后,将自动创建本地存储相关 CRD,包括:
- NodeLocalStorageInitConfig:用于初始化每个节点的 NodeLocalStorage 资源。csi-local 组件在创建 NodeLocalStorage 资源时,如果存在 NodeLocalStorageInitConfig。则会将 NodeLocalStorageInitConfig 中的配置填充到新创建 NodeLocalStorage 资源的 Spec 中。
- NodeLocalStorage:用于上报每个节点的存储设备信息,您可根据需要编辑 NodeLocalStorage 资源的 Spec 字段。
本场景以 ecs.i4ag.12xlarge 机型为例,存在一块 3.5T 的 SSD 盘 /dev/nvme0n1,并已经为该机型节点打上标签 csi-local: "i4ag"。
- 在左侧导航栏中选择 工作负载 > 对象浏览器,单击 使用 Yaml 创建 ,配置 CR 初始化本地盘。
apiVersion: csi.volcengine.com/v1alpha1
kind: NodeLocalStorageInitConfig
- 等待 1 分钟左右,执行以下命令,查看对应节点的 NodeLocalStorage 配置。其中192.168.2.6为节点的 IP 地址。
kubectl get nls 192.168.2.6 -oyaml
- 预期结果如下,能够查询到 VolumeGroup 信息,表示初始化成功。
apiVersion: csi.volcengine.com/v1alpha1
creationTimestamp: "2024-07-17T08:52:03Z"
resourceVersion: "30819"
uid: 129012df-d9b2-41f1-bb5f-0d86fc15baf3
lastUpdateTime: "2024-07-17T09:51:24Z"
- allocatable: 3840753532928
available: 3840753532928
步骤四:通过临时卷方式使用 LVM 卷
本场景以创建无状态为例,介绍如何通过临时卷方式使用 LVM 卷。
- 创建 Deployment 的 YAML 文件。示例文件deployment-demo.yaml代码如下:
image: doc-cn-beijing.cr.volces.com/vke/nginx-demo:v1.0
driver: local.csi.volcengine.com
vgName: csi-local-pool-0
kubectl create -f deployment-demo.yaml
结果验证
工作负载创建成功后,登录节点,查看对应节点上的块本地存储分配详情。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
├─vda1 254:1 0 190M 0 part /boot/efi
└─vda2 254:2 0 39.8G 0 part /
vdb 254:16 0 100G 0 disk /mnt/vdb
nvme0n1 259:0 0 3.5T 0 disk
└─csi--local--pool--0-csi--c77b8485df5eae495f6b2d902772697a7d9c9364fc4d8bb4750da62c89abba49 253:0 0 10G 0 lvm /mnt/vdb/kubelet/pods/7e9fd2a9-d9a0-4ba4-b80a-6682a8a202a9/volumes/kubernetes.io~csi/webroot/mount
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
csi-c77b8485df5eae495f6b2d902772697a7d9c9364fc4d8bb4750da62c89abba49 csi-local-pool-0 -wi-ao---- 10.00g
- 再次执行lsblk和lvs命令,可以发现 LV 已被回收。
root@iv-yebwt6xkhsqb***:~
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
├─vda1 254:1 0 190M 0 part /boot/efi
└─vda2 254:2 0 39.8G 0 part /
vdb 254:16 0 100G 0 disk /mnt/vdb
nvme0n1 259:0 0 3.5T 0 disk
root@iv-yebwt6xkhsqb***:~
root@iv-yebwt6xkhsqb***:~
root@iv-yebwt6xkhsqb***:~
root@iv-yebwt6xkhsqb***:~
最近更新时间:2026.02.03 17:09:47