This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.3.11. 使用本地卷的持久性存储
OpenShift Container Platform 可以使用本地卷来置备持久性存储。本地持久性卷允许您使用标准 PVC 接口访问本地存储设备,如磁盘或分区。
无需手动将 Pod 调度到节点即可使用本地卷,因为系统了解卷节点的约束。但是,本地卷仍会受到底层节点可用性的影响,而且并不适用于所有应用程序。
本地卷只能用作静态创建的持久性卷。
3.11.1. 安装 Local Storage Operator 复制链接链接已复制到粘贴板!
默认情况下,OpenShift Container Platform 中不会安装 Local Storage Operator。使用以下流程来安装和配置这个 Operator,从而在集群中启用本地卷。
先决条件
- 访问 OpenShift Container Platform web 控制台或命令行 (CLI)。
流程
创建
local-storage
项目:oc new-project local-storage
$ oc new-project local-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:允许在基础架构节点上创建本地存储。
您可能希望使用 Local Storage Operator 在基础架构节点上创建卷来支持一些组件,如日志记录和监控。
您必须调整默认节点选择器,以便 Local Storage Operator 包含基础架构节点,而不只是 worker 节点。
要阻止 Local Storage Operator 继承集群范围的默认选择器,请输入以下命令:
oc annotate project local-storage openshift.io/node-selector=''
$ oc annotate project local-storage openshift.io/node-selector=''
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 UI
按照以下步骤,通过 web 控制台安装 Local Storage Operator:
- 登陆到 OpenShift Container Platform Web 控制台。
-
导航至 Operators
OperatorHub。 - 在过滤器框中键入 Local Storage 以查找 Local Storage Operator。
- 点击 Install。
- 在 Create Operator Subscription 页面中,选择 A specific namespace on the cluster。从下拉菜单中选择 local-storage。
- 将 Update Channel 和 Approval Strategy 的值调整为所需的值。
- 点 Subscribe.
完成后,Web 控制台的 Installed Operators 部分中会列出 Local Storage Operator。
使用 CLI
通过 CLI 安装 Local Storage Operator。
输入以下命令来创建 Local Storage Operator 对象:
oc apply -f local-storage.yaml
$ oc apply -f local-storage.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在此阶段,Operator Lifecycle Manager (OLM) 已可以了解 Local Storage Operator。Operator 的 ClusterServiceVersion (CSV) 应出现在目标命名空间中,由 Operator 提供的 API 应可用于创建。
通过检查是否创建了所有 pod 和 Local Storage Operator 来验证本地存储安装:
检查是否已创建所有必需的 pod:
oc -n local-storage get pods
$ oc -n local-storage get pods NAME READY STATUS RESTARTS AGE local-storage-operator-746bf599c9-vlt5t 1/1 Running 0 19m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 ClusterServiceVersion (CSV) YAML 清单,查看
local-storage
项目中是否有 Local Storage Operator:oc get csvs -n local-storage
$ oc get csvs -n local-storage NAME DISPLAY VERSION REPLACES PHASE local-storage-operator.4.2.26-202003230335 Local Storage 4.2.26-202003230335 Succeeded
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果通过了所有检查,则代表 Local Storage Operator 已被成功安装。
3.11.2. 置备本地卷 复制链接链接已复制到粘贴板!
无法通过动态置备来创建本地卷。相反,持久性卷必须由 Local Storage Operator 创建。此置备程序会在定义的资源中指定的路径上查找任意设备,包括文件系统和块卷。
先决条件
- 安装了 Local Storage Operator。
- 本地磁盘已附加到 OpenShift Container Platform 节点。
流程
创建本地卷资源。这必须定义本地卷的节点和路径。
注意不要在同一设备中使用不同的存储类名称。这样做可创建多个持久性卷 (PV)。
例如:Filesystem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 安装了 Local Storage Operator 的命名空间。
- 2
- 可选:包含附加了本地存储卷的节点列表的节点选择器。这个示例使用从
oc get node
获取的节点主机名。如果没有定义值,则 Local Storage Operator 会尝试在所有可用节点上查找匹配的磁盘。 - 3
- 定义本地卷类型的卷模式,可以是
Filesystem
或Block
。 - 4
- 第一次挂载本地卷时所创建的文件系统。
- 5
- 包含要从中选择的本地存储设备列表的路径。
- 6
- 将这个值替换为您的到 LocalVolume 资源的实际本地磁盘文件路径,如
/dev/xvdg
。当置备程序已被成功部署时,会为这些本地磁盘创建 PV。
例如:Block
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过指定您刚才创建的文件,在 OpenShift Container Platform 集群中创建本地卷资源:
oc create -f <local-volume>.yaml
$ oc create -f <local-volume>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证置备程序是否已创建,并且创建了对应的守护进程集:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意所需和当前的守护进程设定进程数。如果需要的数目是
0
,这表示标签选择器无效。验证持久性卷是否已创建:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
编辑 LocalVolume
对象不会更改现有持久性卷的 fsType
或 volumeMode
,因为这样做可能会导致破坏性操作。
3.11.3. 创建本地卷持久性卷声明 复制链接链接已复制到粘贴板!
必须静态创建本地卷作为持久性卷声明(PVC),才能被 pod 访问。
前提条件
- 持久性卷是使用本地卷置备程序创建的。
流程
使用对应的存储类创建 PVC:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过指定您刚才创建的文件,在 OpenShift Container Platform 集群中创建 PVC:
oc create -f <local-pvc>.yaml
$ oc create -f <local-pvc>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.11.4. 附加本地声明 复制链接链接已复制到粘贴板!
本地卷映射到 PersistentVolumeClaim (PVC) 后,可在资源内指定该本地卷。
先决条件
- 同一命名空间中存在 PVC。
流程
在资源规格中包含定义的声明。以下示例在 Pod 内声明 PVC:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过指定您刚才创建的文件,在 OpenShift Container Platform 集群中创建资源:
oc create -f <local-pod>.yaml
$ oc create -f <local-pod>.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.11.5. 使用 Local Storage Operator pod 的容限 复制链接链接已复制到粘贴板!
污点可用于节点,以防止它们运行常规工作负载。要允许 Local Storage Operator 使用污点节点,您必须在 Pod
或 DaemonSet
定义中添加容限。这允许在这些污点节点上运行所创建的资源。
您可以通过 LocalVolume
资源把容限应用到 Local Storage Operator pod,通过节点规格把污点应用到一个节点。节点上的污点指示节点排斥所有不容许该污点的 pod。使用一个没有存在于其他 pod 上的特定污点可确保 Local Storage Operator pod 也可以在该节点上运行。
污点与容限由 key、value 和 effect 组成。作为参数,它表示为 key=value:effect
。运算符允许您将其中一个参数留空。
先决条件
- 安装了 Local Storage Operator。
- 本地磁盘已附加到带有一个污点的 OpenShift Container Platform 节点上。
- 污点节点可以置备本地存储。
流程
配置本地卷以便在污点节点上调度:
修改定义
Pod
的 YAML 文件并添加LocalVolume
规格,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
定义的容限度将传递给生成的守护进程集,允许为包含指定污点的节点创建 diskmaker 和 provisioner pod。
3.11.6. 删除 Local Storage Operator 资源 复制链接链接已复制到粘贴板!
3.11.6.1. 删除本地卷 复制链接链接已复制到粘贴板!
有时候,必须要删除本地卷。虽然移除 LocalVolume 资源中的条目并且删除 PersistentVolume 通常已经足够,但若您要重新使用同一设备路径或者使其由不同的存储类进行管理,则需要额外的步骤。
以下流程涉及以 root 用户身份访问节点。如果在本流程中步骤范围以外修改节点状态,则可能会导致集群不稳定。
前提条件
持久性卷必须处于
Released
或Available
状态。警告删除仍在使用中的持久性卷可能会导致数据丢失或崩溃。
流程
编辑之前创建的本地卷以删除所有不需要的磁盘。
编辑集群资源:
oc edit localvolume <name> -n local-storage
$ oc edit localvolume <name> -n local-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
找到
devicePaths
下的行,删除所有代表不需要的磁盘的行。
删除所有创建的持久性卷。
oc delete pv <pv-name>
$ oc delete pv <pv-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除节点上的所有符号链接。
在节点上创建一个调试 Pod:
oc debug node/<node-name>
$ oc debug node/<node-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将您的根目录改为主机:
chroot /host
$ chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前往包含本地卷符号链接的目录。
cd /mnt/local-storage/<sc-name>
$ cd /mnt/local-storage/<sc-name>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 用于创建本地卷的存储类的名称。
删除归属于已移除设备的符号链接。
rm <symlink>
$ rm <symlink>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.11.6.2. 卸载 Local Storage Operator 复制链接链接已复制到粘贴板!
要卸载 Local Storage Operator,您必须删除 Operator 以及 local-storage
项目中创建的所有资源。
当本地存储 PV 仍在使用时,不建议卸载 Local Storage Operator。当 Operator 被移除后 PV 仍然会被保留。但是如果在没有删除 PV 和本地存储资源的情况下重新安装 Operator,则可能会出现不确定的行为。
先决条件
- 访问 OpenShift Container Platform Web 控制台。
流程
删除项目中的所有本地卷资源:
oc delete localvolume --all --all-namespaces
$ oc delete localvolume --all --all-namespaces
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 Web 控制台卸载 Local Storage Operator。
- 登陆到 OpenShift Container Platform Web 控制台。
-
导航到 Operators
Installed Operators。 - 在过滤器框中键入 Local Storage 以查找 Local Storage Operator。
-
点 Local Storage Operator
末尾的 Options 菜单。
- 点击 Uninstall Operator。
- 在出现的窗口中点击 Remove。
由 Local Storage Operator 创建的 PV 将保留在集群中,直到被删除为止。当这些卷不再被使用后,运行以下命令删除它们:
oc delete pv <pv-name>
$ oc delete pv <pv-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除
local-storage
项目:oc delete project local-storage
$ oc delete project local-storage
Copy to Clipboard Copied! Toggle word wrap Toggle overflow