集成Trident
要集成Trident、需要集成以下设计和架构要素:驱动程序选择和部署、存储类设计、虚拟池设计、永久性卷请求(PVC)对存储配置的影响、卷操作以及使用Trident部署OpenShift服务。
驱动程序选择和部署
为存储系统选择并部署后端驱动程序。
ONTAP 后端驱动程序
ONTAP 后端驱动程序可通过所使用的协议以及在存储系统上配置卷的方式来区分。因此、在确定要部署的驱动程序时、请仔细考虑。
更高级别的是,如果您的应用程序中的组件需要共享存储(多个 Pod 访问同一个 PVC ),则基于 NAS 的驱动程序将成为默认选项,而基于块的 iSCSI 驱动程序则可满足非共享存储的需求。根据应用程序要求以及存储和基础架构团队的舒适程度选择协议。一般来说,对于大多数应用程序来说,它们之间没有什么区别,因此通常是根据是否需要共享存储(多个 POD 需要同时访问)来决定的。
可用的ONTAP 后端驱动程序包括:
-
ontap-NAS
:配置的每个 PV 都是一个完整的 ONTAP FlexVolume 。 -
ontap-nas-economy.
:配置的每个 PV 都是一个 qtree ,每个 FlexVolume 的 qtree 数量是可配置的(默认值为 200 )。 -
ontap-nas-flexgroup
:使用配置为完整 ONTAP FlexGroup 的每个 PV ,以及分配给 SVM 的所有聚合。 -
ontap-san
:配置的每个 PV 都是其自身 FlexVolume 中的一个 LUN 。 -
ontap-san-economi
:配置的每个 PV 都是一个 LUN ,每个 FlexVolume 具有可配置的 LUN 数量(默认值为 100 )。
在三个 NAS 驱动程序之间进行选择会对应用程序可用的功能产生一些影响。
请注意、在下表中、并非所有功能都通过Trident公开。如果需要某些功能,存储管理员必须在配置后应用这些功能。上标脚注区分了每个功能和驱动程序的功能。
ONTAP NAS 驱动程序 | 快照 | 克隆 | 动态导出策略 | 多连接 | QoS | 调整大小 | Replication |
---|---|---|---|---|---|---|---|
|
是的。 |
是的。 |
是脚注: 5[] |
是的。 |
是脚注: 1[] |
是的。 |
是脚注: 1[] |
|
是脚注: 3[] |
是脚注: 3[] |
是脚注: 5[] |
是的。 |
是脚注: 3[] |
是的。 |
是脚注: 3[] |
|
是脚注: 1[] |
否 |
是脚注: 5[] |
是的。 |
是脚注: 1[] |
是的。 |
是脚注: 1[] |
Trident为ONTAP提供了2个SAN驱动程序、其功能如下所示。
ONTAP SAN 驱动程序 | 快照 | 克隆 | 多连接 | 双向 CHAP | QoS | 调整大小 | Replication |
---|---|---|---|---|---|---|---|
|
是的。 |
是的。 |
是脚注: 4[] |
是的。 |
是脚注: 1[] |
是的。 |
是脚注: 1[] |
|
是的。 |
是的。 |
是脚注: 4[] |
是的。 |
是脚注: 3[] |
是的。 |
是脚注: 3[] |
上表的脚注:是脚注:1[]:不受Trident管理是脚注:2[]:受Trident管理、但不受PV粒度脚注:3[]:不受Trident管理、而不是PV粒度是脚注:4[]:支持原始块卷脚注:5[]:受Trident支持
非 PV 粒度功能将应用于整个 FlexVolume ,而所有 PV (即共享 FlexVol 中的 qtree 或 LUN )将共享一个通用计划。
如上表所示, ontap-nas
与 ontap-nas-economy
之间的大部分功能是相同的。但是,由于 ontap-nas-economy
驱动程序限制了按 PV 粒度控制计划的能力,因此这可能会特别影响灾难恢复和备份规划。对于希望在 ONTAP 存储上利用 PVC 克隆功能的开发团队,只有在使用 ontap-NAS
, ontap-san
或 ontap-san-economy-经济
驱动程序时,才可能实现这一点。
solidfire-san 驱动程序还能够克隆 PVC 。
|
Cloud Volumes ONTAP 后端驱动程序
Cloud Volumes ONTAP 可为各种使用情形提供数据控制以及企业级存储功能,包括文件共享和为 NAS 和 SAN 协议( NFS , SMB/CIFS 和 iSCSI )提供服务的块级存储。Cloud Volume ONTAP 的兼容驱动程序包括 ontap-nas
, ontap-nas-economy.
ontap-san
和 `ontap-san-economy.`它们适用于适用于 Azure 的 Cloud Volume ONTAP ,适用于 GCP 的 Cloud Volume ONTAP 。
适用于ONTAP 的Amazon FSX后端驱动程序
借助Amazon FSx for NetApp ONTAP、您可以利用您熟悉的NetApp功能、性能和管理功能、同时还可以利用在AWS上存储数据的精简性、灵活性、安全性和可扩展性。FSx for ONTAP支持许多ONTAP文件系统功能和管理API。Cloud Volume ONTAP 的兼容驱动程序包括 ontap-nas
, ontap-nas-economy
, ontap-nas-flexgroup
, ontap-san
和 ontap-san-economy
。
NetApp HCI/SolidFire后端驱动程序
与 NetApp HCI/SolidFire 平台结合使用的 solidfire-san
驱动程序可帮助管理员根据 QoS 限制为 Trident 配置 Element 后端。如果您希望设计后端,以便为 Trident 配置的卷设置特定的 QoS 限制,请在后端文件中使用 type
参数。管理员还可以使用 limitVolumeSize
参数限制可在存储上创建的卷大小。目前, solidfire-san
驱动程序不支持卷大小调整和卷复制等 Element 存储功能。这些操作应通过 Element Software Web UI 手动完成。
SolidFire 驱动程序 | 快照 | 克隆 | 多连接 | CHAP | QoS | 调整大小 | Replication |
---|---|---|---|---|---|---|---|
|
是的。 |
是的。 |
是脚注: 2[] |
是的。 |
是的。 |
是的。 |
是脚注: 1[] |
脚注:是脚注:1[]:不受Trident管理是脚注:2[]:支持原始块卷
Azure NetApp Files 后端驱动程序
Trident使用 `azure-netapp-files`驱动程序管理"Azure NetApp Files"服务。
有关此驱动程序及其配置方法的详细信息,请参见"Azure NetApp Files 的 Trident 后端配置"。
Azure NetApp Files 驱动程序 | 快照 | 克隆 | 多连接 | QoS | 展开 | Replication |
---|---|---|---|---|---|---|
|
是的。 |
是的。 |
是的。 |
是的。 |
是的。 |
是脚注: 1[] |
脚注:是脚注:1[]:不受Trident管理
Google Cloud上的Cloud Volumes Service 后端驱动程序
Trident使用 `gcp-cvs`驱动程序与Google Cloud上的Cloud Volumes Service链接。
该 gcp-cvs`驱动程序使用虚拟池对后端进行抽象化、并允许Trident确定卷放置。管理员在文件中定义虚拟池 `backend.json
。存储类使用选择器按标签标识虚拟池。
-
如果在后端定义了虚拟池、则Trident将尝试在Google Cloud存储池中创建一个卷、而这些虚拟池仅限于此类存储池。
-
如果未在后端定义虚拟池、Trident将从该区域的可用存储池中选择Google Cloud存储池。
要在Trident上配置Google Cloud后端,必须在后端文件中指定 projectNumber
、 apiRegion`和 `apiKey
。您可以在Google Cloud控制台中找到项目编号。API密钥来自您在Google Cloud上为Cloud Volumes Service 设置API访问时创建的服务帐户专用密钥文件。
有关Google Cloud上的Cloud Volumes Service服务类型和服务级别的详细信息,请参阅"了解Trident对CVS for GCP的支持"。
适用于Google Cloud的Cloud Volumes Service 驱动程序 | 快照 | 克隆 | 多连接 | QoS | 展开 | Replication |
---|---|---|---|---|---|---|
|
是的。 |
是的。 |
是的。 |
是的。 |
是的。 |
仅适用于CVS-Performance服务类型。 |
复制注释
|
存储类设计
要创建 Kubernetes 存储类对象,需要配置并应用各个存储类。本节讨论如何为您的应用程序设计存储类。
特定后端利用率
可以在特定存储类对象中使用筛选功能来确定要将哪个存储池或一组池与该特定存储类结合使用。可以在存储类中设置三组筛选器: storagePools
, addtionalStoragePools
和 / 或 excludeStoragePools
。
`storagePools`参数可帮助将存储限制为与任何指定属性匹配的池集。 `additionalStoragePools`参数用于扩展Trident用于配置的池集以及通过属性和参数选择的池集 `storagePools`。您可以单独使用参数,也可以同时使用这两个参数,以确保选择适当的存储池集。
excludeStoragePools
参数用于明确排除列出的一组与属性匹配的池。
模拟QoS策略
如果要设计存储类以模拟服务质量策略,请创建一个存储类,其中 mmedia
attribute 为 HDD
或 sSD
。根据存储类中提及的 mmedia
属性, Trident 将选择提供 HDD
或 sSD
聚合的相应后端,以便与介质属性匹配,然后将卷配置定向到特定聚合。因此,我们可以创建一个存储类高级版,该高级版会将 mmedia
attribute 设置为 sSD
,该高级版可归类为高级 QoS 策略。我们可以创建另一个存储类标准,该标准会将介质属性设置为 `HDD' ,并可归类为标准 QoS 策略。我们还可以使用存储类中的 ``IOPS' 属性将配置重定向到可定义为 QoS 策略的 Element 设备。
根据特定功能使用后端
存储类可设计为在启用了精简和厚配置,快照,克隆和加密等功能的特定后端直接配置卷。要指定要使用的存储,请创建存储类,以指定启用了所需功能的相应后端。
虚拟池
所有Trident后端均可使用虚拟池。您可以使用Trident提供的任何驱动程序为任何后端定义虚拟池。
通过虚拟池、管理员可以在后端创建一个抽象级别、并可通过存储类进行引用、从而提高卷在后端的灵活性和效率。可以使用相同的服务类定义不同的后端。此外、可以在同一后端创建多个存储池、但其特征不同。如果为存储类配置了具有特定标签的选择器、则Trident会选择一个与所有选择器标签匹配的后端来放置卷。如果存储类选择器标签与多个存储池匹配、则Trident将选择其中一个存储池来配置卷。
虚拟池设计
创建后端时,通常可以指定一组参数。管理员无法使用相同的存储凭据和一组不同的参数创建另一个后端。随着虚拟池的推出、此问题描述 得以缓解。虚拟池是在后端和Kubernetes存储类之间引入的级别抽象、因此管理员可以定义参数以及标签、这些参数和标签可以通过Kubernetes存储类作为选择器进行引用、并且与后端无关。可以使用Trident为所有受支持的NetApp后端定义虚拟池。该列表包括 SolidFire/NetApp HCI , ONTAP , GCP 上的 Cloud Volumes Service 以及 Azure NetApp Files 。
定义虚拟池时、建议不要尝试在后端定义中重新排列现有虚拟池的顺序。此外,建议不要编辑 / 修改现有虚拟池的属性,而是定义新的虚拟池。 |
模拟不同的服务级别/QoS
可以为模拟服务类设计虚拟池。使用适用于 Azure NetApp Files 的云卷服务的虚拟池实施,让我们来了解一下如何设置不同的服务类。使用多个标签配置Azure NetApp Files后端、以表示不同的性能级别。设置 servicelevel
添加适当的性能级别、并在每个标签下添加其他所需的方面。现在、创建可映射到不同虚拟池的不同Kubernetes存储类。使用 parameters.selector
字段中、每个StorageClass都会调用可用于托管卷的虚拟池。
分配特定的方面
可以从一个存储后端设计具有一组特定方面的多个虚拟池。为此,请为后端配置多个标签,并在每个标签下设置所需的方面。现在、使用创建不同的Kubernetes存储类 parameters.selector
要映射到不同虚拟池的字段。在后端配置的卷将在选定虚拟池中定义相关方面。
影响存储配置的 PVC 特征
创建PVC时、请求的存储类以外的某些参数可能会影响Trident配置决策过程。
访问模式
通过 PVC 请求存储时,访问模式为必填字段之一。所需的模式可能会影响所选的托管存储请求的后端。
Trident 将尝试与根据下表指定的访问方法所使用的存储协议匹配。这独立于底层存储平台。
ReadWriteOnce | ReadOnlyMany | 读取写入任何 | |
---|---|---|---|
iSCSI |
是的。 |
是的。 |
是(原始块) |
NFS |
是的。 |
是的。 |
是的。 |
如果在未配置 NFS 后端的情况下向 Trident 部署提交了 ReadWriteMany PVC 请求,则不会配置任何卷。因此,请求者应使用适合其应用程序的访问模式。
卷操作
修改永久性卷
除了两个例外,永久性卷是 Kubernetes 中不可变的对象。创建后,可以修改回收策略和大小。但是、这并不会阻止在Kubnetes之外修改卷的某些方面。为了针对特定应用程序自定义卷,确保容量不会意外占用,或者出于任何原因将卷移动到其他存储控制器,这一点可能是理想的。
目前, Kubernetes 树中配置程序不支持对 NFS 或 iSCSI PV 执行卷大小调整操作。Trident 支持扩展 NFS 和 iSCSI 卷。 |
创建 PV 后,无法修改其连接详细信息。
创建按需卷快照
Trident 支持按需创建卷快照,并使用 CSI 框架从快照创建 PVC 。快照提供了一种维护数据时间点副本的便捷方法,并且生命周期独立于 Kubernetes 中的源 PV 。这些快照可用于克隆 PVC 。
从快照创建卷
Trident 还支持从卷快照创建 PersistentVolumes 。为此、只需创建一个PerseentVolumeClaim、并将 `datasource`作为需要从中创建卷的所需快照。Trident 将使用快照上的数据创建卷来处理此 PVC 。通过此功能,可以跨区域复制数据,创建测试环境,整体更换损坏或损坏的生产卷,或者检索特定文件和目录并将其传输到另一个连接的卷。
移动集群中的卷
存储管理员可以在 ONTAP 集群中的聚合和控制器之间无中断地将卷移动到存储使用者。只要目标聚合是Trident正在使用的SVM有权访问的聚合、此操作不会影响Trident或Kubornetes集群。重要的是、如果此聚合已新添加到SVM中、则需要通过将其重新添加到Trident来刷新后端。此操作将触发 Trident 来重新清点 SVM ,以便识别新聚合。
但是, Trident 不支持在后端之间自动移动卷。这包括在同一集群中的 SVM 之间,集群之间或不同存储平台上(即使该存储系统是连接到 Trident 的存储系统也是如此)。
如果将卷复制到其他位置,则可以使用卷导入功能将当前卷导入到 Trident 中。
展开卷
Trident支持调整NFS和iSCSI PVs的大小。这样,用户就可以直接通过 Kubernetes 层调整其卷的大小。所有主要 NetApp 存储平台均可进行卷扩展,包括 ONTAP , SolidFire/NetApp HCI 和 Cloud Volumes Service 后端。要允许稍后进行扩展、请在与卷关联的StorageClass中将设置 allowVolumeExpansion`为 `true
。每当需要调整永久性卷的大小时、都可以将永久性卷声明中的标注编辑 `spec.resources.requests.storage`为所需的卷大小。Trident会自动调整存储集群上卷的大小。
将现有卷导入到 Kubernetes 中
通过卷导入,可以将现有存储卷导入到 Kubernetes 环境中。目前, ontap-nas
, ontap-nas-flexgroup
, solidfire-san
, azure-netapp-files
和 GCP-CVS
驱动程序均支持此功能。在将现有应用程序移植到 Kubernetes 或在灾难恢复场景中,此功能非常有用。
使用ONTAP和驱动程序时 solidfire-san
、请使用命令 `tridentctl import volume <backend-name> <volume-name> -f /path/pvc.yaml`将现有卷导入到要由Trident管理的Kubnetes中。导入卷命令中使用的 PVC YAML 或 JSON 文件指向将 Trident 标识为配置程序的存储类。使用 NetApp HCI/SolidFire 后端时,请确保卷名称是唯一的。如果卷名称重复,请将卷克隆为唯一名称,以便卷导入功能可以区分它们。
如果 `azure-netapp-files`使用或驱动程序、请使用命令 `tridentctl import volume <backend-name> <volume path> -f /path/pvc.yaml`将卷导入到Trident要管理的Kubornetes `gcp-cvs`中。这样可以确保卷引用是唯一的。
执行上述命令后, Trident 将在后端找到卷并读取其大小。它会自动添加(并在必要时覆盖)已配置的PVC卷大小。然后, Trident 会创建新的 PV , Kubernetes 会将 PVC 绑定到 PV 。
如果部署的容器需要特定的导入 PVC ,则容器将保持待定状态,直到通过卷导入过程绑定 PVC/PV 对为止。在绑定 PVC/PV 对后,如果没有其他问题,应启动容器。
部署 OpenShift 服务
OpenShift 增值集群服务为集群管理员和要托管的应用程序提供了重要功能。这些服务使用的存储可以使用节点本地资源进行配置,但这通常会限制服务的容量,性能,可恢复性和可持续性。利用企业级存储阵列为这些服务提供容量可以显著改善服务,但是,与所有应用程序一样, OpenShift 和存储管理员应密切合作,为每个服务确定最佳选项。应大量利用 Red Hat 文档来确定要求并确保满足规模估算和性能需求。
注册表服务
有关为注册表部署和管理存储的文档,请参见 "netapp.io" 在中 "博客"。
日志记录服务
与其他 OpenShift 服务一样,日志记录服务也是使用清单文件(也称为)提供的配置参数 Ansible 部署的主机,提供给攻略手册。其中包括两种安装方法:在初始 OpenShift 安装期间部署日志记录以及在安装 OpenShift 之后部署日志记录。
自 Red Hat OpenShift 3.9 版开始,官方文档出于对数据损坏的担忧,建议不要对日志记录服务使用 NFS 。这是基于 Red Hat 对其产品的测试得出的。ONTAP NFS服务器不存在这些问题、可以轻松地备份日志记录部署。最终,您可以选择日志记录服务的协议,只需了解这两种协议在使用 NetApp 平台时都能很好地发挥作用,如果您愿意,也没有理由避免使用 NFS 。 |
如果您选择将 NFS 与日志记录服务结合使用,则需要将 Ansible 变量 OpenShift_enable_unsupported _configurations
设置为 true
,以防止安装程序失败。
入门
可以选择为这两个应用程序以及 OpenShift 集群本身的核心操作部署日志记录服务。如果选择部署操作日志记录,则通过将变量 OpenShift_logging_use_ops
指定为 true
,将创建两个服务实例。控制操作日志记录实例的变量包含 "ops" ,而应用程序实例则不包含 "ops" 。
要确保底层服务使用正确的存储、请务必根据部署方法配置Ansensant变量。让我们来看看每种部署方法的选项。
下表仅包含与日志记录服务相关的存储配置相关的变量。您可以在中找到其他选项 "RedHat OpenShift 日志记录文档" 应根据您的部署情况查看,配置和使用。 |
下表中的变量将导致 Ansible 攻略手册使用提供的详细信息为日志记录服务创建 PV 和 PVC 。与在 OpenShift 安装后使用组件安装攻略手册相比,此方法的灵活性明显降低,但是,如果您有可用的现有卷,则可以选择此方法。
变量 | 详细信息 |
---|---|
|
设置为 |
|
NFS 主机的主机名或 IP 地址。此值应设置为虚拟机的数据 LIF 。 |
|
NFS 导出的挂载路径。例如,如果卷接合为 ` /OpenShift_logging` ,则应使用该路径作为此变量。 |
|
要创建的 PV 的名称,例如 |
|
NFS 导出的大小,例如 |
如果 OpenShift 集群已在运行,因此已部署和配置 Trident ,则安装程序可以使用动态配置来创建卷。需要配置以下变量。
变量 | 详细信息 |
---|---|
|
设置为 true 可使用动态配置的卷。 |
|
要在 PVC 中使用的存储类的名称。 |
|
在 PVC 中请求的卷大小。 |
|
日志记录服务使用的 PVC 的前缀。 |
|
设置为 |
|
操作日志记录实例的存储类的名称。 |
|
操作实例的卷请求大小。 |
|
操作实例 PVC 的前缀。 |
部署日志记录堆栈
如果要在初始 OpenShift 安装过程中部署日志记录,则只需遵循标准部署过程即可。Ansible 将配置和部署所需的服务和 OpenShift 对象,以便在 Ansible 完成后立即提供此服务。
但是,如果在初始安装后进行部署,则 Ansible 需要使用组件攻略手册。此过程可能会因 OpenShift 的不同版本而略有变化,因此请务必阅读并遵循 "RedHat OpenShift Container Platform 3.11 文档" 适用于您的版本。
指标服务
指标服务可为管理员提供有关 OpenShift 集群的状态,资源利用率和可用性的宝贵信息。此外、POD自动扩展功能也需要使用此功能、许多组织会将来自指标服务的数据用于其成本分摊和/或成本分摊应用程序。
与日志记录服务和 OpenShift 作为一个整体一样, Ansible 用于部署指标服务。此外、与日志记录服务一样、指标服务也可以在集群初始设置期间或集群运行后使用组件安装方法进行部署。下表包含在为指标服务配置永久性存储时非常重要的变量。
下表仅包含与存储配置相关的变量,因为这些变量与指标服务相关。文档中还有许多其他选项,应根据您的部署情况进行查看,配置和使用。 |
变量 | 详细信息 |
---|---|
|
设置为 |
|
NFS 主机的主机名或 IP 地址。此值应设置为 SVM 的数据 LIF 。 |
|
NFS 导出的挂载路径。例如,如果卷接合为 ` /OpenShift_metrics` ,则您将使用该路径作为此变量。 |
|
要创建的 PV 的名称,例如 |
|
NFS 导出的大小,例如 |
如果 OpenShift 集群已在运行,因此已部署和配置 Trident ,则安装程序可以使用动态配置来创建卷。需要配置以下变量。
变量 | 详细信息 |
---|---|
|
用于衡量指标 PVC 的前缀。 |
|
要请求的卷的大小。 |
|
要用于度量指标的存储类型,必须将此类型设置为动态, Ansible 才能创建具有相应存储类的 PVC 。 |
|
要使用的存储类的名称。 |
部署指标服务
使用在主机 / 清单文件中定义的适当 Ansible 变量,使用 Ansible 部署服务。如果您在 OpenShift 安装时进行部署,则系统将自动创建和使用 PV 。如果您要使用组件操作手册进行部署、则在安装OpenShift后、Ansable会创建所需的任何PVC、并在Trident为其配置存储后部署该服务。
上述变量以及部署过程可能会随 OpenShift 的每个版本而发生变化。确保您查看并遵循 "RedHat 的 OpenShift 部署指南" 为您的版本配置,以便为您的环境进行配置。