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 章 配置持久性存储
3.1. 使用 AWS Elastic 文件系统的永久性存储 复制链接链接已复制到粘贴板!
OpenShift Container Platform 可以使用 Amazon Web Services (AWS) Elastic File System volumes (EFS) 。您可以使用 AWS EC2 为 OpenShift Container Platform 集群置备持久性存储。我们假设您对 Kubernetes 和 AWS 有一定的了解。
elastic 文件系统只是一个技术预览功能。技术预览功能不被红帽产品服务等级协议 (SLA) 支持,且可能在功能方面有缺陷。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的详情,请参阅 https://access.redhat.com/support/offerings/techpreview/。
Kubernetes 持久性卷框架允许管理员提供带有持久性存储的集群,并使用户可以在不了解底层存储架构的情况下请求这些资源。AWS Elastic File System 卷可以动态置备。持久性卷不与某个特定项目或命名空间相关联,它们可以在 OpenShift Container Platform 集群间共享。持久性卷声明是针对某个项目或者命名空间的,相应的用户可请求它。
3.1.1. 先决条件 复制链接链接已复制到粘贴板!
- 配置 AWS 安全组来允许来自 EFS 卷安全组的入站 NFS 流量。
- 将 AWS EFS 卷配置为允许来自任何主机的 SSH 流量。
3.1.2. 在配置映射中保存 EFS 变量 复制链接链接已复制到粘贴板!
建议使用配置映射包含 EFS 置备程序所需的所有环境变量。
流程
通过创建一个包含以下内容的
configmap.yaml
文件,定义包含环境变量的 OpenShift Container PlatformConfigMap
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在文件被配置后,运行以下命令在集群中创建该文件:
oc create -f configmap.yaml -n <namespace>
$ oc create -f configmap.yaml -n <namespace>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.3. 为 EFS 卷配置授权 复制链接链接已复制到粘贴板!
EFS 置备程序必须被授权与 AWS 端点沟通,同时观察和更新 OpenShift Container Platform 存储资源。以下是为 EFS 置备程序创建必要权限的流程。
流程
创建一个
efs-provisioner
服务帐户:oc create serviceaccount efs-provisioner
$ oc create serviceaccount efs-provisioner
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建定义所需权限的文件
clusterrole.yaml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个文件
clusterrolebinding.yaml
,该文件定义一个集群角色绑定把定义的角色和服务帐户进行绑定:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 运行 EFS provisioner pod 的命名空间。如果 EFS 置备程序不在
default
命名空间中运行,则必须更新这个值。
创建一个文件
role.yaml
,它定义了具有所需权限的角色:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个文件
rolebinding.yaml
,它定义了一个角色绑定将这个角色和服务帐户进行绑定:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 运行 EFS provisioner pod 的命名空间。如果 EFS 置备程序不在
default
命名空间中运行,则必须更新这个值。
在 OpenShift Container Platform 集群中创建资源:
oc create -f clusterrole.yaml,clusterrolebinding.yaml,role.yaml,rolebinding.yaml
$ oc create -f clusterrole.yaml,clusterrolebinding.yaml,role.yaml,rolebinding.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.4. 创建 EFS 存储类 复制链接链接已复制到粘贴板!
在创建持久性卷声明前,OpenShift Container Platform 集群中应已存在一个存储类。以下是为 EFS 置备程序创建存储类的流程。
流程
通过创建包含以下内容的
storageclass.yaml
来定义包含环境变量的 OpenShift Container Platform 配置映射:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在文件被配置后,运行以下命令在集群中创建该文件:
oc create -f storageclass.yaml
$ oc create -f storageclass.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.5. 创建 EFS 置备程序 复制链接链接已复制到粘贴板!
EFS 置备程序是一个 OpenShift Container Platform pod,它将 EFS 卷作为 NFS 共享挂载。
先决条件
- 创建定义 EFS 环境变量的配置映射。
- 创建包含必要的集群和角色权限的服务帐户。
- 为置备卷创建存储类。
- 配置 Amazon Web Services (AWS) 安全组,允许在所有 OpenShift Container Platform 节点上接收进入的 NFS 网络数据。
- 配置 AWS EFS 卷安全组配置,允许来自所有源的 SSH 网络数据。
流程
通过创建包含以下内容的
provisioner.yaml
文件定义 EFS 置备程序:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在文件被配置后,运行以下命令在集群中创建该文件:
oc create -f provisioner.yaml
$ oc create -f provisioner.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.1.6. 创建 EFS 持久性卷声明 复制链接链接已复制到粘贴板!
创建 EFS 持久性卷声明,以便 pod 可以挂载底层的 EFS 存储。
先决条件
- 创建 EFS provisioner pod。
流程 (UI)
-
在 OpenShift Container Platform 控制台中,点击 Storage
Persistent Volume Claims。 - 在持久性卷声明概述页中,点 Create Persistent Volume Claim。
在接下来的页面中定义所需选项。
- 从列表中选择您创建的存储类。
- 输入存储声明的唯一名称。
- 选择访问模式来决定所创建存储声明的读写访问权限。
定义存储声明的大小。
注意虽然您必须输入大小,但每个访问 EFS 卷的 pod 都有无限存储。定义一个值,比如
1Mi
,它会提醒您存储大小是无限的。
- 点击 Create 创建持久性卷声明,并生成一个持久性卷。
流程 (CLI)
另外,您可以通过创建一个包含以下内容的
pvc.yaml
文件来定义 EFS 持久性卷声明:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在文件被配置后,运行以下命令在集群中创建该文件:
oc create -f pvc.yaml
$ oc create -f pvc.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow