故障排除
使用此处提供的指针排除安装和使用 Astra Trident 时可能遇到的问题。
要获得有关Astra Trident的帮助、请使用创建支持包 tridentctl logs -a -n trident 并将其发送到 NetApp Support <Getting Help> 。
|
有关故障排除文章的完整列表,请参见 "NetApp 知识库(需要登录)"。您还可以找到有关排除与 Astra 相关的问题的信息 "此处"。 |
常规故障排除
-
如果Trident Pod无法正常启动(例如、当Trident Pod卡在中时)
ContainerCreating
阶段中的就绪容器少于两个)、正在运行kubectl -n trident describe deployment trident
和kubectl -n trident describe pod trident--**
可以提供更多见解。获取kubelet日志(例如、通过journalctl -xeu kubelet
)也很有用。 -
如果Trident日志中的信息不足、您可以尝试通过传递来为Trident启用调试模式
-d
根据您的安装选项标记为install参数。然后、使用确认已设置调试
./tridentctl logs -n trident
和搜索level=debug msg
在日志中。- 随操作员一起安装
-
kubectl patch torc trident -n <namespace> --type=merge -p '{"spec":{"debug":true}}'
此操作将重新启动所有 Trident Pod ,这可能需要几秒钟的时间。您可以通过观察输出中的"期限"列来检查此情况
kubectl get pod -n trident
。对于Astra Trident 20.07和20.10、请使用
tprov
代替torc
。 - 随 Helm 一起安装
-
helm upgrade <name> trident-operator-21.07.1-custom.tgz --set tridentDebug=true`
- 使用 tridentctl 安装
-
./tridentctl uninstall -n trident ./tridentctl install -d -n trident
-
您也可以通过包括来获取每个后端的调试日志
debugTraceFlags
在后端定义中。例如、包括debugTraceFlags: {“api”:true, “method”:true,}
在Trident日志中获取API调用和方法遍历。现有后端可以具有debugTraceFlags
已配置tridentctl backend update
。 -
使用RedHat CoreOS时、请确保执行此操作
iscsid
在工作节点上启用并默认启动。可以使用 OpenShift MachineConfigs 或修改点燃模板来完成此操作。 -
使用 Trident 时可能会遇到的一个常见问题 "Azure NetApp Files" 租户和客户端密码来自权限不足的应用程序注册。有关 Trident 要求的完整列表,请参见 "Azure NetApp Files" Configuration
-
如果在将PV挂载到容器时出现问题、请确保这样
rpcbind
已安装且正在运行。使用主机操作系统所需的软件包管理器并检查是否rpcbind
正在运行。您可以检查的状态rpcbind
通过运行提供服务systemctl status rpcbind
或其等效项。 -
Trident后端报告其位于中
failed
State尽管之前已执行过操作、但可能是由于更改了与后端关联的SVM/admin凭据而导致的。使用更新后端信息tridentctl update backend
或者、放弃Trident POD将修复此问题描述。 -
如果要升级 Kubernetes 集群和 / 或 Trident 以使用测试版卷快照,请确保已完全删除所有现有的 alpha Snapshot CRS 。然后、您可以使用
tridentctl obliviate alpha-snapshot-crd
用于删除alpha snapshot CRD的命令。请参见 "本博客" 了解迁移 alpha 快照所涉及的步骤。 -
如果在容器运行时安装Trident时遇到权限问题、请尝试使用安装Trident
--in cluster=false
标志。这不会使用安装程序POD、并可避免因出现权限问题trident-installer
用户。 -
使用
uninstall parameter <Uninstalling Trident>
用于在运行失败后进行清理。默认情况下,该脚本不会删除 Trident 创建的 CRD ,因此即使在正在运行的部署中,也可以安全地卸载并重新安装。 -
如果要降级到早期版本的Trident、请先运行
tridentctl uninstall
用于删除Trident的命令。下载所需的 "Trident 版本" 并使用安装tridentctl install
命令:只有在未创建新 PV 且未对现有 PV/ 后端 / 存储类进行更改的情况下,才考虑降级。由于Trident现在使用CRD来保持状态、因此创建的所有存储实体(后端、存储类、PV和卷快照)都具有associated CRD objects <Kubernetes CustomResourceDefinition Objects>
而不是写入到早期安装的Trident版本所使用的PV中的数据。* 新创建的 PV 在移回早期版本时不可用。 * 降级后, Trident 将无法看到对后端, PV ,存储类和卷快照(已创建 / 更新 / 删除)等对象所做的更改 * 。先前安装的 Trident 版本所使用的 PV 仍可供 Trident 查看。如果返回到早期版本,则不会中断对已使用旧版本创建的 PV 的访问,除非已对其进行升级。 -
要完全删除Trident、请运行
tridentctl obliviate crd
命令:此操作将删除所有 CRD 对象并取消定义 CRD 。Trident 将不再管理其已配置的任何 PV 。之后,需要从头开始重新配置 Trident 。 -
成功安装后、如果PVC卡在中
Pending
阶段、运行kubectl describe pvc
可以提供追加信息 、说明Trident为何无法为此PVC配置PV。
使用操作员对未成功的 Trident 部署进行故障排除
如果使用操作员部署Trident、则为的状态 TridentOrchestrator
更改自 Installing
to Installed
。如果您观察到 Failed
状态、并且操作员无法自行恢复、您应运行以下命令来检查操作员的日志:
tridentctl logs -l trident-operator
跟踪 trident 操作器容器的日志可能会指向问题所在。例如,其中一个问题描述可能是无法从运行良好的环境中的上游注册表中提取所需的容器映像。
要了解Trident安装失败的原因、您应查看 TridentOrchestrator
状态。
kubectl describe torc trident-2 Name: trident-2 Namespace: Labels: <none> Annotations: <none> API Version: trident.netapp.io/v1 Kind: TridentOrchestrator ... Status: Current Installation Params: IPv6: Autosupport Hostname: Autosupport Image: Autosupport Proxy: Autosupport Serial Number: Debug: Image Pull Secrets: <nil> Image Registry: k8sTimeout: Kubelet Dir: Log Format: Silence Autosupport: Trident Image: Message: Trident is bound to another CR 'trident' Namespace: trident-2 Status: Error Version: Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Error 16s (x2 over 16s) trident-operator.netapp.io Trident is bound to another CR 'trident'
此错误表示已存在 TridentOrchestrator`用于安装Trident。由于每个Kubernetes集群只能有一个Trident实例、因此操作员可确保在任何给定时间只有一个活动实例 `TridentOrchestrator
它可以创建的内容。
此外,观察 Trident Pod 的状态通常可以指示情况是否不正确。
kubectl get pods -n trident NAME READY STATUS RESTARTS AGE trident-csi-4p5kq 1/2 ImagePullBackOff 0 5m18s trident-csi-6f45bfd8b6-vfrkw 4/5 ImagePullBackOff 0 5m19s trident-csi-9q5xc 1/2 ImagePullBackOff 0 5m18s trident-csi-9v95z 1/2 ImagePullBackOff 0 5m18s trident-operator-766f7b8658-ldzsv 1/1 Running 0 8m17s
您可以清楚地看到,由于未提取一个或多个容器映像, Pod 无法完全初始化。
要解决此问题、您应编辑 TridentOrchestrator
CR.或者、您也可以删除 TridentOrchestrator
、并使用修改后的准确定义创建一个新的。
使用对未成功的Trident部署进行故障排除 tridentctl
为了帮助确定出现了什么问题、您可以使用重新运行安装程序 -d
参数、用于打开调试模式并帮助您了解问题所在:
./tridentctl install -n trident -d
解决问题后、您可以按如下所示清理安装、然后运行 tridentctl install
命令:
./tridentctl uninstall -n trident INFO Deleted Trident deployment. INFO Deleted cluster role binding. INFO Deleted cluster role. INFO Deleted service account. INFO Removed Trident user from security context constraint. INFO Trident uninstallation succeeded.