简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

故障排除

贡献者

使用此处提供的指针排除安装和使用 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 tridentkubectl -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、请先运行 tridenctl 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.