常见问题解答
查找有关安装、配置、升级和故障排除 Trident 的常见问题解答。
常规问题
Trident 多久发布一次?
从 24.02 版本开始,Trident 每四个月发布一次:2 月、6 月和 10 月。
Trident 支持 Kubernetes 特定版本发布的所有功能吗?
Trident 通常不支持 Kubernetes 中的 alpha 功能。Trident 可能在 Kubernetes beta 版本发布后的两个 Trident 版本中支持 beta 功能。
Trident 的功能是否依赖于其他 NetApp 产品?
Trident 不依赖于其他 NetApp 软件产品,可作为独立应用程序使用。但是,您应该有一个 NetApp 后端存储设备。
如何获取完整的 Trident 配置详情?
使用 tridentctl get 命令可获取有关 Trident 配置的更多信息。
我可以获取有关 Trident 如何配置存储的指标吗?
可以。可以使用 Prometheus 端点收集有关 Trident 操作的信息,例如管理的后端数量、配置的卷数量、消耗的字节数等。您还可以使用 "Cloud Insights" 进行监控和分析。
使用 Trident 作为 CSI Provisioner 时,用户体验是否会发生变化?
否。就用户体验和功能而言,没有任何变化。使用的置备程序名称为 csi.trident.netapp.io。如果要使用当前和未来版本提供的所有新功能,建议使用此安装 Trident 的方法。
在 Kubernetes 集群上安装和使用 Trident
Trident 支持从私有注册表进行离线安装吗?
是的,Trident 可以脱机安装。请参阅 "了解 Trident 安装"。
我可以远程安装 Trident 吗?
可以。Trident 18.10 及更高版本支持从任何具有 `kubectl`访问权限的机器进行远程安装。验证 `kubectl`访问权限后(例如,从远程机器启动 `kubectl get nodes`命令进行验证),请按照安装说明进行操作。
我可以使用 Trident 配置高可用性吗?
Trident 作为 Kubernetes Deployment (ReplicaSet) 安装在一个实例中,因此它内置了 HA。您不应增加部署中的副本数。如果安装 Trident 的节点丢失或 pod 无法访问,Kubernetes 会自动将 pod 重新部署到集群中的健康节点。Trident 仅为控制面,因此如果重新部署 Trident,当前挂载的 pod 不会受到影响。
Trident 是否需要访问 kube-system 命名空间?
Trident 从 Kubernetes API Server 读取信息,以确定应用程序何时请求新的 PVC,因此它需要访问 kube-system。
Trident 使用哪些角色和权限?
Trident 安装程序创建了一个 Kubernetes ClusterRole,它具有对 Kubernetes 集群的 PersistentVolume、PersistentVolumeClaim、StorageClass 和 Secret 资源的特定访问权限。请参阅 "自定义 tridentctl 安装"。
我可以在本地生成 Trident 用于安装的确切清单文件吗?
如果需要,您可以在本地生成和修改 Trident 用于安装的确切清单文件。请参阅 "自定义 tridentctl 安装"。
我是否可以为两个独立的 Kubernetes 集群的两个独立的 Trident 实例共享相同的 ONTAP 后端 SVM?
虽然不建议这样做,但你可以为两个 Trident 实例使用同一个后端 SVM。在安装期间为每个实例指定唯一的卷名称,和/或在 `StoragePrefix`文件中指定唯一的 `setup/backend.json`参数。这样可以确保不会为两个实例使用同一个FlexVol volume。
是否可以在 ContainerLinux(原 CoreOS)下安装 Trident?
Trident 只是一个 Kubernetes pod,可以安装在运行 Kubernetes 的任何地方。
我可以将 Trident 与 NetApp Cloud Volumes ONTAP 一起使用吗?
是的,AWS、Google Cloud 和 Azure 支持 Trident。
故障排除和支持
NetApp 是否支持 Trident?
虽然 Trident 是开源的,并且是免费提供的,但如果支持您的 NetApp 后端,则 NetApp 完全支持它。
如何生成支持日志包?
您可以通过运行 tridentctl logs -a 来创建支持捆绑包。除了捆绑包中捕获的日志之外,还捕获 kubelet 日志以诊断 Kubernetes 端的挂载问题。获取 kubelet 日志的说明因 Kubernetes 的安装方式而异。
如果我需要提出新功能的请求,该怎么做?
在 "Trident Github"上创建问题,并在问题的主题和描述中提及 RFE。
我在哪里提出缺陷?
在 "Trident Github"上创建问题。请务必提供与此问题相关的所有必要信息和日志。
如果我对 Trident 有需要澄清的简单问题,该怎么办?是否有社区或论坛?
如果您有任何疑问、问题或要求,请通过我们的 Trident "Discord 频道" 或 GitHub 联系我们。
我的存储系统密码已更改,Trident 不再工作,如何恢复?
使用 tridentctl update backend myBackend -f </path/to_new_backend.json> -n trident`更新后端密码。将示例中的 `myBackend`替换为后端名称,将 `/path/to_new_backend.json`替换为正确 `backend.json`文件的路径。
Trident 找不到我的 Kubernetes 节点。如何修复此问题?
有两种可能的情况,Trident 无法找到 Kubernetes 节点。这可能是因为 Kubernetes 中的网络问题或 DNS 问题。运行在每个 Kubernetes 节点上的 Trident 节点 daemonset 必须能够与 Trident 控制器通信,以便向 Trident 注册节点。如果在安装 Trident 后发生了网络更改,则只有在将新的 Kubernetes 节点添加到集群时才会遇到此问题。
如果 Trident pod 被摧毁,我会丢失数据吗?
如果 Trident pod 被销毁,数据不会丢失。Trident 元数据存储在 CRD 对象中。所有由 Trident 配置的 PV 都将正常运行。
升级 Trident
我可以直接从旧版本升级到新版本(跳过几个版本)吗?
NetApp 支持将 Trident 从一个主要版本升级到下一个即时主要版本。您可以从版本 18.xx 升级到 19.xx,19.xx 升级到 20.xx,依此类推。您应该在生产部署之前在实验室中测试升级。
是否可以将 Trident 降级到以前的版本?
如果需要修复升级后发现的错误、依赖问题或未成功或未完成的升级,则应 "卸载 Trident" 并使用该版本的特定说明重新安装早期版本。这是降级到早期版本的唯一建议方法。
管理后端和卷
我是否需要在 ONTAP 后端定义文件中同时定义 Management 和 DataLIF?
管理 LIF 是必需的。DataLIF 各不相同:
-
ONTAP SAN:不为 iSCSI 指定。Trident 使用 "ONTAP 选择性 LUN 映射" 来发现建立多路径会话所需的 iSCI LIF。如果明确定义了
dataLIF,则会生成警告。有关详细信息,请参阅 "ONTAP SAN 配置选项和示例"。 -
ONTAP NAS:NetApp 建议指定
dataLIF。如果未提供,Trident 从 SVM 获取 dataLIF。您可以指定要用于 NFS 装载操作的完全限定域名 (FQDN),允许您创建循环 DNS 以跨多个 dataLIF 进行负载平衡。有关详细信息,请参阅"ONTAP NAS 配置选项和示例"
Trident 能否为 ONTAP 后端配置 CHAP?
是的。Trident 支持 ONTAP 后端的双向 CHAP。这需要在后端配置中设置 useCHAP=true。
如何使用 Trident 管理导出策略?
Trident 可以从 20.04 版开始动态创建和管理导出策略。这使存储管理员能够在其后端配置中提供一个或多个 CIDR 块,并让 Trident 将属于这些范围的节点 IP 添加到其创建的导出策略中。通过这种方式,Trident 会自动管理给定 CIDR 中具有 IP 的节点的添加和删除规则。
IPv6 地址可以用于管理和 DataLIF 吗?
Trident 支持为以下项定义 IPv6 地址:
-
managementLIF和dataLIF适用于 ONTAP NAS 后端。 -
managementLIF用于 ONTAP SAN 后端。您不能在 ONTAP SAN 后端上指定dataLIF。
必须使用标记 --use-ipv6(用于 tridentctl`安装)、 `IPv6(用于 Trident 操作员)或 tridentTPv6(用于 Helm 安装)安装 Trident 才能在 IPv6 上运行。
是否可以在后端更新管理 LIF?
可以,可以使用 tridentctl update backend 命令更新后端管理 LIF。
是否可以在后端更新 DataLIF?
您只能在 `ontap-nas`和 `ontap-nas-economy`上更新 DataLIF。
我可以在 Trident for Kubernetes 中创建多个后端吗?
Trident 可以使用相同的驱动程序或不同的驱动程序同时支持多个后端。
Trident 如何存储后端凭据?
Trident 将后端凭据存储为 Kubernetes Secrets。
Trident 如何选择特定后端?
如果后端属性不能用于为类自动选择正确的池,则使用 storagePools 和 additionalStoragePools 参数来选择一组特定的池。
如何确保 Trident 不会从特定后端提供?
该 excludeStoragePools 参数用于筛选 Trident 用于配置的池集,并将删除所有匹配的池。
如果存在多个相同类型的后端,Trident 如何选择使用哪个后端?
如果有多个相同类型的配置后端,Trident 会根据 StorageClass 和 PersistentVolumeClaim 中存在的参数选择适当的后端。例如,如果有多个 ontap-nas 驱动程序后端,Trident 会尝试匹配 StorageClass 和 PersistentVolumeClaim 中的参数并进行组合,以匹配能够满足 StorageClass 和 PersistentVolumeClaim 中列出的要求的后端。如果有多个后端与请求匹配,Trident 会从中随机选择一个。
Trident 支持 Element/SolidFire 的双向 CHAP 吗?
是。
Trident 如何在 ONTAP 卷上部署 Qtrees?单个卷上可以部署多少个 Qtrees?
`ontap-nas-economy` 驱动程序在同一 FlexVol 卷中创建多达 200 个 Qtree(可在 50 到 300 之间配置),每个集群节点创建 100,000 个 Qtree,每个集群创建 2.4M 个。当您输入由经济型驱动程序提供服务的新 `PersistentVolumeClaim`时,驱动程序会查看是否已存在可以为新 Qtree 提供服务的 FlexVol 卷。如果不存在可以为 Qtree 提供服务的 FlexVol 卷,则会创建一个新 FlexVol 卷。
如何为在 ONTAP NAS 上配置的卷设置 Unix 权限?
您可以通过在后端定义文件中设置参数来对 Trident 配置的卷设置 Unix 权限。
如何在配置卷时配置一组显式 ONTAP NFS 挂载选项?
默认情况下,Trident 不会使用 Kubernetes 将挂载选项设置为任何值。要指定 Kubernetes 存储类中的挂载选项,请按照给出的示例进行操作"此处"。
如何将已配置的卷设置为特定的导出策略?
要允许相应的主机访问卷,请使用后端定义文件中配置的 exportPolicy 参数。
如何通过 Trident 使用 ONTAP 设置卷加密?
您可以使用后端定义文件中的加密参数对 Trident 提供的卷设置加密。有关更多信息,请参阅:"Trident 如何与 NVE 和 NAE 配合使用"
通过 Trident 为 ONTAP 实施 QoS 的最佳方式是什么?
使用 `StorageClasses`为 ONTAP 实施 QoS。
如何通过 Trident 指定精简配置或厚配置?
ONTAP 驱动程序支持精简或厚配置。ONTAP 驱动程序默认为精简配置。如果需要厚配置,则应配置后端定义文件或 StorageClass。如果两者都已配置, StorageClass 则优先考虑。为 ONTAP 配置以下内容:
-
在 `StorageClass`上,将 `provisioningType`属性设置为 thick。
-
在后端定义文件中,通过设置
backend spaceReserve parameter为 volume 来启用厚卷。
如何确保即使我不小心删除了 PVC,也不会删除正在使用的卷?
从 1.10 版开始,将在 Kubernetes 上自动启用 PVC 保护。
我可以扩展由 Trident 创建的 NFS PVC 吗?
是的。您可以扩展由 Trident 创建的 PVC。请注意,卷自动增长是 ONTAP 功能,不适用于 Trident。
可以在 SnapMirror 数据保护 (DP) 或离线模式下导入卷吗?
如果外部卷处于 DP 模式或脱机,则卷导入失败。您将收到以下错误消息:
Error: could not import volume: volume import failed to get size of volume: volume <name> was not found (400 Bad Request) command terminated with exit code 1. Make sure to remove the DP mode or put the volume online before importing the volume.
资源配额如何转换为 NetApp 集群?
只要 NetApp 存储有容量,Kubernetes 存储资源配额就应该有效。当 NetApp 存储因容量不足而无法兑现 Kubernetes 配额设置时,Trident 尝试预配,但会出现错误。
我可以使用 Trident 创建卷快照吗?
可以。Trident 支持创建按需卷快照和从快照创建持久卷。要从快照创建 PV,请确保已启用 VolumeSnapshotDataSource 功能门。
支持 Trident 卷快照的驱动程序有哪些?
截至今天,我们的 ontap-nas、 ontap-nas-flexgroup、 ontap-san、 ontap-san-economy、 solidfire-san 和 azure-netapp-files 后端驱动程序均支持按需快照。
如何使用 ONTAP 对由 Trident 配置的卷进行快照备份?
此功能适用于 ontap-nas、 ontap-san 和 ontap-nas-flexgroup 驱动程序。您还可以在 FlexVol 层级为 ontap-san-economy 驱动程序指定 snapshotPolicy。
这也适用于 ontap-nas-economy 驱动程序,但适用于 FlexVol 卷级粒度,而不适用于 qtree 级粒度。要启用对 Trident 配置的卷进行快照的功能,请将后端参数选项 snapshotPolicy 设置为在 ONTAP 后端上定义的所需快照策略。存储控制器拍摄的任何快照都不被 Trident 识别。
我可以为通过 Trident 配置的卷设置快照预留百分比吗?
是的,您可以通过在后端定义文件中设置 snapshotReserve`属性,通过 Trident 为存储快照副本预留特定百分比的磁盘空间。如果已在后端定义文件中配置 `snapshotPolicy`和 `snapshotReserve,则会根据后端文件中提到的 `snapshotReserve`百分比设置快照保留百分比。如果未提及 `snapshotReserve`百分比数字,则 ONTAP 默认情况下将快照保留百分比设为 5。如果 `snapshotPolicy`选项设置为 none,则快照保留百分比设置为 0。
我可以直接访问卷 snapshot 目录并复制文件吗?
是的,您可以通过在后端定义文件中设置 snapshotDir 参数来访问 Trident 配置的卷上的快照目录。
我可以通过 Trident 为卷设置 SnapMirror 吗?
目前,SnapMirror 必须使用 ONTAP CLI 或 OnCommand System Manager 从外部进行设置。
如何将永久卷恢复到特定的 ONTAP 快照?
要将卷还原到 ONTAP 快照,请执行以下步骤:
-
将正在使用 Persistent 卷的应用程序 Pod 置于静默状态。
-
通过 ONTAP CLI 或 OnCommand System Manager 还原到所需的快照。
-
重新启动应用程序 pod。
Trident 能否在配置了负载分担镜像的 SVM 上配置卷?
可以为通过 NFS 提供数据的 SVM 根卷创建负载共享镜像。ONTAP 自动更新由 Trident 创建的卷的负载共享镜像。这可能会导致卷的安装延迟。使用 Trident 创建多个卷时,配置卷取决于 ONTAP 更新负载共享镜像。
如何为每个客户/租户分离存储类使用情况?
Kubernetes 不允许在命名空间中使用存储类。但是,您可以使用 Kubernetes 通过使用每个命名空间的存储资源配额来限制每个命名空间对特定存储类的使用。若要拒绝特定命名空间访问特定存储,请将该存储类的资源配额设置为 0。