容器服务支持通过 CSI 使用本地存储,本文为您介绍如何通过临时卷方式使用本地存储 LVM 卷。
说明
【邀测·申请试用】本地存储相关的 csi-local 组件 和 存储感知调度 功能目前均处于邀测阶段,如需使用,请提交申请。
/var/lib/containerd
和 /var/lib/kubelet
。避免使用本地盘挂载到容器、镜像存储目录,否则,将不适用本地存储使用场景。v1.24.15-vke.34
及以上版本的 1.24 集群、v1.26.10-vke.22
及以上版本的 1.26 集群、v1.28.3-vke.16
及以上版本的 1.28 集群。使用本地存储需要依赖 3 个组件,请参考以下顺序依次安装和配置。
警告
snapshot-controller
和 csi-local
组件。scheduler-plugin
组件右侧 配置 按钮,在配置弹窗中勾选存储感知调度配置项的 本地存储。配置项 | 说明 |
---|---|
存储感知调度 | 目前支持本地存储,默认关闭,勾选即表示开启本地存储的存储感知调度功能,开启后可根据节点所具有的存储资源进行调度。 说明 需要安装相应存储 CSI 组件才可以生效,本场景已经安装 |
创建挂载本地盘的节点池或使用已有节点池,并配置节点池相关信息。本场景涉及的关键配置说明如下,其他按需配置即可,详细操作步骤和配置项说明参见:创建节点池、创建托管节点池。
配置项 | 说明 |
---|---|
数据盘 | 容器、镜像存储目录 警告 避免使用本地盘挂载到容器、镜像存储目录,否则,将不适用本地存储使用场景。 |
其他数据盘 | |
节点标签 | 自定义配置节点标签,后续初始化本地盘,组 VG 时用于筛选节点,例如:csi-local: "i2-2xlarge" 。 |
初始化环节,需要根据实际需求组 VolumeGroup(VG),目前支持使用 CRD 自定义组 VolumeGroup(VG)。csi-local 组件安装成功后,将自动创建本地存储相关 CRD,根据实际需求创建 CR 即可。
本场景以 ecs.i2.2xlarge 机型为例,存在一块 3.5T 的 SSD 盘 /dev/nvme0n1
,并已经为该机型节点打上标签 csi-local: "i2-2xlarge"
。
本场景使用的 Yaml 如下,实际使用场景可根据实际需求更新配置。
apiVersion: csi.volcengine.com/v1alpha1 kind: NodeLocalStorageInitConfig metadata: name: csi-local spec: globalConfig: # 全局默认节点配置。 listConfig: devices: {} mountPoints: {} vgs: {} resourceToBeInited: {} spdkConfig: {} nodesConfig: # 按 Label 筛选的节点池级别配置。 - selector: # 筛选规则。 matchLabels: csi-local: "i2-2xlarge" # 筛选节点的 Lable。 listConfig: # 可被 csi-local 分配的存储设备列表。 mountPoints: {} vgs: # LVM(共享盘)黑白名单,此处的共享盘名称指 VolumeGroup 名称。 include: - csi-local-pool-[0-9]+ resourceToBeInited: # 设备初始化列表。 vgs: # LVM(共享盘)初始化。 - devices: # 将块设备 /dev/nvme0n1 初始化为名为 csi-local-pool-0 的 VolumeGroup。注意:若当节点上包含同名 VG,则 csi-local 不做操作。 - /dev/nvme0n1 name: csi-local-pool-0 spdkConfig: {}
❯ kubectl get nls 192.168.2.6 -oyaml apiVersion: csi.volcengine.com/v1alpha1 kind: NodeLocalStorage metadata: creationTimestamp: "2024-07-17T08:52:03Z" generation: 1 name: 192.168.2.6 resourceVersion: "30819" uid: 129012df-d9b2-41f1-bb5f-0d86fc15baf3 spec: listConfig: devices: include: - /dev/vdc mountPoints: {} vgs: include: - csi-local-pool-[0-9]+ nodeName: 192.168.2.6 resourceToBeInited: vgs: - devices: - /dev/nvme0n1 name: csi-local-pool-0 spdkConfig: {} status: filteredStorageInfo: updateStatusInfo: lastUpdateTime: "2024-07-17T09:51:24Z" updateStatus: accepted volumeGroups: - csi-local-pool-0 nodeStorageInfo: volumeGroups: # VolumeGroup 初始化成功,可查看 VG 相关信息。 - allocatable: 3840753532928 available: 3840753532928 condition: DiskReady name: csi-local-pool-0 physicalVolumes: - /dev/nvme0n1 total: 3840753532928
本场景以创建 Deployment Pod 为例,介绍如何通过临时卷方式使用 LVM 卷。
Yaml 示例如下:
apiVersion: apps/v1 kind: Deployment metadata: name: file-server spec: replicas: 2 selector: matchLabels: app: file-server template: metadata: labels: app: file-server spec: containers: - name: file-server image: nginx:latest volumeMounts: - mountPath: /srv name: webroot volumes: - name: webroot csi: driver: local.csi.volcengine.com fsType: ext4 # 此处指定文件系统,可为 ext4、xfs。 volumeAttributes: vgName: csi-local-pool-0 # 【必填】临时卷所用的 VG。 size: 10Gi # 【选填】临时卷大小,留空不配置默认为 1Gi。