使用 LocalVolume 进行配置
LocalVolume 会为列出的每个设备路径静态配置一个 PersistentVolume。如果不存在在 spec.storageClassDevices[].storageClassName 中指定名称的 StorageClass,operator 还会创建该 StorageClass。
当你知道确切的磁盘时,请使用 LocalVolume。对于基于过滤器的配置,请参阅使用 LocalVolumeSet 进行配置。
前提条件
- 已安装 Alauda Container Platform Local Disk Provisioner。请参阅安装。
- 每个目标设备都已连接到节点、未挂载且没有分区。
- 优先使用发现本地磁盘中介绍的稳定路径,例如
/dev/disk/by-id/...。不要使用简短的/dev/sdX名称或/dev/disk/by-path/...路径。这些名称可能会在节点重启后发生变化。
配置 Filesystem 卷
LocalVolume 是静态的。provisioner 会在你列出的路径中查找设备。
NOTE
不要对同一设备使用不同的 StorageClass 名称。这样会为一个磁盘创建多个 PersistentVolume。
在控制平面节点上:
- 安装 Alauda Container Platform Local Disk Provisioner 的命名空间。默认值为
acp-storage。 - 可选。具有所列磁盘的节点。请从
kubectl get node获取主机名。如果省略,operator 会在每个节点上查找这些路径。 - PersistentVolume 的 StorageClass。如果不存在,operator 会创建它。请使用能够唯一标识这组磁盘的名称。
- 当
true时,operator 会在使用前擦除所列设备上的分区表、文件系统签名和数据。默认值为false。仅当可以销毁这些设备时,才设置true。 Filesystem或Block。- 首次挂载时创建的文件系统。仅当
volumeMode为Filesystem时设置此项。 - 设备路径。使用来自
LocalVolumeDiscoveryResult.status.discoveredDevices[].deviceID的/dev/disk/by-id/...。不要使用/dev/sdX或/dev/disk/by-path/...。
WARNING
forceWipeDevicesAndDestroyAllData: true 会销毁所列设备上的现有数据。
验证 PersistentVolume:
示例输出:
NOTE
编辑 LocalVolume 不会更改已存在的 PersistentVolume 上的 fsType 或 volumeMode。此更改会造成破坏性影响。
配置 Block 卷
要配置原始 Block 设备,请设置 volumeMode: Block,并省略 fsType:
使用可标识此 Block 集的 StorageClass 名称,例如 localblock。PersistentVolumeClaim 还必须设置 volumeMode: Block。
绑定 PersistentVolumeClaim
在将使用该卷的项目中创建声明。请求不得超过设备容量。
Filesystem 声明:
- 必须匹配
LocalVolumevolumeMode。对于 Block 卷,请使用Block。 - 必须小于或等于 PersistentVolume 容量。
- 必须匹配
spec.storageClassDevices[].storageClassName。
确认声明已绑定:
添加磁盘或节点
添加磁盘或节点需要编辑同一个 LocalVolume,而不是执行单独的操作步骤。
- 添加磁盘:将
/dev/disk/by-id/...路径追加到spec.storageClassDevices[].devicePaths。 - 添加节点:将节点主机名添加到
spec.nodeSelector.nodeSelectorTerms,然后列出该节点的设备路径。
应用编辑后,等待处于 Available 状态的新 PersistentVolume: