集成 Astra Trident
要集成 Astra Trident ,需要集成以下设计和架构要素:驱动程序选择和部署,存储类设计,虚拟存储池设计,永久性卷声明( PVC )对存储配置的影响,卷操作以及使用 Astra 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-economy
:配置的每个PV都是一个LUN、每个FlexVolume具有可配置的LUN数量(默认值为100)。
在三个 NAS 驱动程序之间进行选择会对应用程序可用的功能产生一些影响。
请注意,在下表中,并非所有功能都通过 Astra Trident 公开。如果需要某些功能,存储管理员必须在配置后应用这些功能。上标脚注区分了每个功能和驱动程序的功能。
ONTAP NAS 驱动程序 | 快照 | 克隆 | 动态导出策略 | 多连接 | QoS | 调整大小 | Replication |
---|---|---|---|---|---|---|---|
|
是的。 |
是的。 |
是脚注: 5[] |
是的。 |
是脚注: 1[] |
是的。 |
是脚注: 1[] |
|
是脚注: 3[] |
是脚注: 3[] |
是脚注: 5[] |
是的。 |
是脚注: 3[] |
是的。 |
是脚注: 3[] |
|
是脚注: 1[] |
否 |
是脚注: 5[] |
是的。 |
是脚注: 1[] |
是的。 |
是脚注: 1[] |
Astra Trident 为 ONTAP 提供了 2 个 SAN 驱动程序,其功能如下所示。
ONTAP SAN 驱动程序 | 快照 | 克隆 | 多连接 | 双向 CHAP | QoS | 调整大小 | Replication |
---|---|---|---|---|---|---|---|
|
是的。 |
是的。 |
是脚注: 4[] |
是的。 |
是脚注: 1[] |
是的。 |
是脚注: 1[] |
|
是的。 |
是的。 |
是脚注: 4[] |
是的。 |
是脚注: 3[] |
是的。 |
是脚注: 3[] |
上述表的脚注:是脚注: 1[] :不受 Astra Trident 管理是脚注: 2[] :由 Astra Trident 管理,但不是 PV 粒度 Yesfootnote : 3[] :不受 Astra Trident 管理,也不是 PV 粒度 Yesnote : 4[] :支持原始块卷是脚注: 5[] : CSI 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 选择后端驱动程序
借助适用于 ONTAP 的 Amazon FSX ,客户可以利用他们熟悉的 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 选择后端驱动程序
。 solidfire-san
与NetApp HCI/SolidFire平台结合使用的驱动程序可帮助管理员根据QoS限制为Trident配置Element后端。如果您希望设计后端、以便为Trident配置的卷设置特定的QoS限制、请使用 type
参数。管理员还可以使用限制在存储上创建的卷大小 limitVolumeSize
参数。目前、不支持通过实现卷大小调整和卷复制等Element存储功能 solidfire-san
驱动程序。这些操作应通过 Element Software Web UI 手动完成。
SolidFire 驱动程序 | 快照 | 克隆 | 多连接 | CHAP | QoS | 调整大小 | Replication |
---|---|---|---|---|---|---|---|
|
是的。 |
是的。 |
是脚注: 2[] |
是的。 |
是的。 |
是的。 |
是脚注: 1[] |
脚注:是脚注: 1[] :不由 Astra Trident 管理是脚注: 2[] :支持原始块卷
为 Azure NetApp Files 选择后端驱动程序
Astra Trident使用 azure-netapp-files
用于管理的驱动程序 "Azure NetApp Files" 服务
有关此驱动程序及其配置方法的详细信息,请参见 "适用于 Azure NetApp Files 的 Astra Trident 后端配置"。
Azure NetApp Files 驱动程序 | 快照 | 克隆 | 多连接 | QoS | 展开 | Replication |
---|---|---|---|---|---|---|
|
是的。 |
是的。 |
是的。 |
是的。 |
是的。 |
是脚注: 1[] |
脚注:是脚注: 1[] :不由 Astra Trident 管理
为采用 GCP 的 Cloud Volumes Service 选择后端驱动程序
Astra Trident使用 gcp-cvs
用于链接到GCP后端Cloud Volumes Service 的驱动程序。要在Trident上配置GCP后端、需要指定 projectNumber
, apiRegion
,和 apiKey
在后端文件中。项目编号可在 GCP Web 门户中找到,而 API 密钥必须从您在 GCP 上为 Cloud Volumes 设置 API 访问时创建的服务帐户专用密钥文件中获取。Astra Trident 可以在两个卷中创建 CVS 卷之一 "服务类型":
-
* CVS* :基本 CVS 服务类型,可提供较高的区域可用性,但性能级别有限 / 中等。
-
* CVS-Performance* :经过性能优化的服务类型最适合重视性能的生产工作负载。从三个独特的服务级别中进行选择 [
standard
,premium
,和extreme
]。目前, 100 GiB 是要配置的最小 CVS-Performance 卷大小,而 CVS 卷必须至少为 300 GiB 。未来版本的 CVS 可能会删除此限制。
使用默认CVS服务类型部署后端时 [storageClass=software ]、用户*必须获得对GCP上的子1TiB卷功能的访问权限*、以获取相关项目编号和项目ID。这对于 Trident 配置低于 1TiB 的卷是必需的。否则,对于小于 600 GiB 的 PVC ,卷创建 * 将失败 * 。使用 … "此表单" 以访问低于 1 TiB 的卷。
|
适用于 GCP 的 CVS 驱动程序 | 快照 | 克隆 | 多连接 | QoS | 展开 | Replication |
---|---|---|---|---|---|---|
|
是的。 |
是的。 |
是的。 |
是的。 |
是的。 |
是脚注: 1[] |
脚注:是脚注: 1[] :不由 Astra Trident 管理
。 gcp-cvs
驱动程序使用虚拟存储池。虚拟存储池会对后端进行抽象化,从而使 Astra Trident 决定卷的放置。管理员在 backend.json 文件中定义虚拟存储池。存储类使用标签标识虚拟存储池。
存储类设计
要创建 Kubernetes 存储类对象,需要配置并应用各个存储类。本节讨论如何为您的应用程序设计存储类。
针对特定后端利用率的存储类设计
可以在特定存储类对象中使用筛选功能来确定要将哪个存储池或一组池与该特定存储类结合使用。可以在存储类中设置三组筛选器: storagePools
, additionalStoragePools`和/或 `excludeStoragePools
。
。 storagePools
参数有助于将存储限制为与任何指定属性匹配的一组池。。 additionalStoragePools
参数用于扩展Astra Trident用于配置的池集以及由属性和选择的池集 storagePools
parameters您可以单独使用参数,也可以同时使用这两个参数,以确保选择适当的存储池集。
。 excludeStoragePools
参数用于明确排除列出的一组与属性匹配的池。
用于模拟 QoS 策略的存储类设计
如果要设计存储类以模拟服务质量策略、请使用创建存储类 media
属性为 hdd
或 ssd
。基于 media
属性、Trident将选择提供服务的相应后端 hdd
或 ssd
聚合以匹配介质属性、然后将卷的配置定向到特定聚合。因此、我们可以创建存储类高级版 media
属性设置为 ssd
可归类为高级QoS策略。我们可以创建另一个存储类标准,该标准会将介质属性设置为 `HDD' ,并可归类为标准 QoS 策略。我们还可以使用存储类中的 ``IOPS' 属性将配置重定向到可定义为 QoS 策略的 Element 设备。
存储类设计,可根据特定功能利用后端
存储类可设计为在启用了精简和厚配置,快照,克隆和加密等功能的特定后端直接配置卷。要指定要使用的存储,请创建存储类,以指定启用了所需功能的相应后端。
虚拟存储池的存储类设计
所有 Astra Trident 后端均可使用虚拟存储池。您可以使用 Astra Trident 提供的任何驱动程序为任何后端定义虚拟存储池。
通过虚拟存储池,管理员可以在后端创建一个抽象级别,并可通过存储类进行引用,从而提高卷在后端的灵活性和效率。可以使用相同的服务类定义不同的后端。此外,可以在同一后端创建多个存储池,但其特征不同。如果为存储类配置了具有特定标签的选择器,则 Astra Trident 会选择与所有选择器标签匹配的后端来放置卷。如果存储类选择器标签与多个存储池匹配,则 Astra Trident 将选择其中一个存储池来配置卷。
虚拟存储池设计
创建后端时,通常可以指定一组参数。管理员无法使用相同的存储凭据和一组不同的参数创建另一个后端。随着虚拟存储池的推出,此问题描述得以缓解。虚拟存储池是在后端和 Kubernetes 存储类之间引入的级别抽象,因此管理员可以定义参数以及标签,这些参数和标签可以通过 Kubernetes 存储类作为选择器进行引用,并且与后端无关。可以使用 Astra Trident 为所有受支持的 NetApp 后端定义虚拟存储池。该列表包括 SolidFire/NetApp HCI , ONTAP , GCP 上的 Cloud Volumes Service 以及 Azure NetApp Files 。
定义虚拟存储池时,建议不要尝试在后端定义中重新排列现有虚拟池的顺序。此外,建议不要编辑 / 修改现有虚拟池的属性,而是定义新的虚拟池。 |
设计虚拟存储池以模拟不同的服务级别 /QoS
可以设计虚拟存储池来模拟服务类。使用适用于 Azure NetApp Files 的云卷服务的虚拟池实施,让我们来了解一下如何设置不同的服务类。为 ANF 后端配置多个标签,以表示不同的性能级别。设置 servicelevel
添加适当的性能级别、并在每个标签下添加其他所需的方面。现在,创建可映射到不同虚拟存储池的不同 Kubernetes 存储类。使用 parameters.selector
字段中、每个StorageClass都会调用可用于托管卷的虚拟池。
设计用于分配特定方面的虚拟池
可以从一个存储后端设计具有一组特定方面的多个虚拟存储池。为此,请为后端配置多个标签,并在每个标签下设置所需的方面。现在、使用创建不同的Kubernetes存储类 parameters.selector
要映射到不同虚拟存储池的字段。在后端配置的卷将在选定的虚拟存储池中定义相关方面。
影响存储配置的 PVC 特征
创建 PVC 时,请求的存储类以外的某些参数可能会影响 Astra Trident 的配置决策过程。
访问模式
通过 PVC 请求存储时,访问模式为必填字段之一。所需的模式可能会影响所选的托管存储请求的后端。
Astra Trident 将尝试与根据下表指定的访问方法所使用的存储协议匹配。这独立于底层存储平台。
ReadWriteOnce | ReadOnlyMany | 读取写入任何 | |
---|---|---|---|
iSCSI |
是的。 |
是的。 |
是(原始块) |
NFS |
是的。 |
是的。 |
是的。 |
如果在未配置 NFS 后端的情况下向 Trident 部署提交了 ReadWriteMany PVC 请求,则不会配置任何卷。因此,请求者应使用适合其应用程序的访问模式。
卷操作
修改永久性卷
除了两个例外,永久性卷是 Kubernetes 中不可变的对象。创建后,可以修改回收策略和大小。但是,这并不会阻止在 Kubernetes 外部修改卷的某些方面。为了针对特定应用程序自定义卷,确保容量不会意外占用,或者出于任何原因将卷移动到其他存储控制器,这一点可能是理想的。
目前, Kubernetes 树中配置程序不支持对 NFS 或 iSCSI PV 执行卷大小调整操作。Astra Trident 支持扩展 NFS 和 iSCSI 卷。 |
创建 PV 后,无法修改其连接详细信息。
创建按需卷快照
Astra Trident 支持按需创建卷快照,并使用 CSI 框架从快照创建 PVC 。快照提供了一种维护数据时间点副本的便捷方法,并且生命周期独立于 Kubernetes 中的源 PV 。这些快照可用于克隆 PVC 。
从快照创建卷
Astra Trident 还支持从卷快照创建 PersistentVolumes 。为此、只需创建PersistentVolumeClaim并提及即可 datasource
作为需要从中创建卷的所需快照。Astra Trident 将通过创建包含快照上的数据的卷来处理此 PVC 。通过此功能,可以跨区域复制数据,创建测试环境,整体更换损坏或损坏的生产卷,或者检索特定文件和目录并将其传输到另一个连接的卷。
移动集群中的卷
存储管理员可以在 ONTAP 集群中的聚合和控制器之间无中断地将卷移动到存储使用者。此操作不会影响 Astra Trident 或 Kubernetes 集群,只要目标聚合是 Astra Trident 所使用的 SVM 有权访问的聚合即可。重要的是,如果已将聚合新添加到 SVM ,则需要通过将后端重新添加到 Astra Trident 来刷新后端。这将触发 Astra Trident 对 SVM 重新进行清单配置,以便识别新聚合。
但是, Astra Trident 不支持在后端之间自动移动卷。这包括在同一集群中的 SVM 之间,集群之间或不同存储平台上(即使该存储系统是连接到 Astra Trident 的存储系统也是如此)。
如果将卷复制到其他位置,则可以使用卷导入功能将当前卷导入到 Astra Trident 中。
展开卷
Astra Trident 支持调整 NFS 和 iSCSI PV 的大小。这样,用户就可以直接通过 Kubernetes 层调整其卷的大小。所有主要 NetApp 存储平台均可进行卷扩展,包括 ONTAP , SolidFire/NetApp HCI 和 Cloud Volumes Service 后端。要允许稍后进行扩展、请设置 allowVolumeExpansion
to true
在与卷关联的StorageClass中。每当需要调整持久性卷的大小时、请编辑 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
将现有卷导入到要由Astra Trident管理的Kubernetes中。导入卷命令中使用的 PVC YAML 或 JSON 文件指向将 Astra Trident 标识为配置程序的存储类。使用 NetApp HCI/SolidFire 后端时,请确保卷名称是唯一的。如果卷名称重复,请将卷克隆为唯一名称,以便卷导入功能可以区分它们。
如果 azure-netapp-files
或 gcp-cvs
使用驱动程序时、请使用命令 tridentctl import volume <backend-name> <volume path> -f /path/pvc.yaml
将卷导入到要由Astra Trident管理的Kubernetes中。这样可以确保卷引用是唯一的。
执行上述命令后, Astra Trident 将在后端找到卷并读取其大小。它将自动添加(并在必要时覆盖)已配置的 PVC 卷大小。然后, Astra 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
to true
以防止安装程序失败。
入门
可以选择为这两个应用程序以及 OpenShift 集群本身的核心操作部署日志记录服务。如果选择部署操作日志记录、请指定变量 openshift_logging_use_ops
作为 true
、将创建两个服务实例。控制操作日志记录实例的变量包含 "ops" ,而应用程序实例则不包含 "ops" 。
要确保底层服务使用正确的存储,必须根据部署方法配置 Ansible 变量。让我们来了解一下每种部署方法的选项。
下表仅包含与存储配置相关的变量,因为这些变量与日志记录服务相关。您可以在中找到其他选项 "RedHat OpenShift 日志记录文档" 应根据您的部署情况查看,配置和使用。 |
下表中的变量将导致 Ansible 攻略手册使用提供的详细信息为日志记录服务创建 PV 和 PVC 。与在 OpenShift 安装后使用组件安装攻略手册相比,此方法的灵活性明显降低,但是,如果您有可用的现有卷,则可以选择此方法。
变量 | 详细信息 |
---|---|
|
设置为 |
|
NFS 主机的主机名或 IP 地址。此值应设置为虚拟机的数据 LIF 。 |
|
NFS 导出的挂载路径。例如、如果卷接合为 |
|
名称、例如 |
|
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 导出的挂载路径。例如、如果卷接合为 |
|
名称、例如 |
|
NFS导出的大小、例如 |
如果 OpenShift 集群已在运行,因此已部署和配置 Trident ,则安装程序可以使用动态配置来创建卷。需要配置以下变量。
变量 | 详细信息 |
---|---|
|
用于衡量指标 PVC 的前缀。 |
|
要请求的卷的大小。 |
|
要用于度量指标的存储类型,必须将此类型设置为动态, Ansible 才能创建具有相应存储类的 PVC 。 |
|
要使用的存储类的名称。 |
部署指标服务
使用在主机 / 清单文件中定义的适当 Ansible 变量,使用 Ansible 部署服务。如果您在 OpenShift 安装时进行部署,则系统将自动创建和使用 PV 。如果您使用组件攻略手册进行部署,则在 OpenShift 安装之后, Ansible 将创建所需的任何 PVC ,并在 Astra Trident 为其配置存储后部署该服务。
上述变量以及部署过程可能会随 OpenShift 的每个版本而发生变化。确保您查看并遵循 "RedHat 的 OpenShift 部署指南" 为您的版本配置,以便为您的环境进行配置。