本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

疑難排解

貢獻者

請使用此處提供的指標來疑難排解安裝及使用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--** 可提供更多洞見。取得Kibelet記錄(例如、透過 journalctl -xeu kubelet)也很有幫助。

  • 如果Trident記錄中沒有足夠的資訊、您可以透過傳遞來嘗試啟用Trident的偵錯模式 -d 根據您的安裝選項標示安裝參數。

    然後確認是否使用設定偵錯 ./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 uninstall -n trident
    ./tridentctl install -d -n trident
  • 您也可以取得每個後端的除錯記錄、方法是加入 debugTraceFlags 在後端定義中。例如、包括 debugTraceFlags: {“api”:true, “method”:true,} 取得Trident記錄中的API呼叫和方法反向。現有的後端可以有 debugTraceFlags 設定為 tridentctl backend update

  • 使用RedHat CoreOS時、請務必確認 iscsid 在工作節點上啟用、預設為啟動。您可以使用OpenShift機器組態或修改點火模板來完成此作業。

  • 使用Trident時可能會遇到的常見問題 "Azure NetApp Files" 當租戶和用戶端機密來自權限不足的應用程式登錄時。如需Trident需求的完整清單、請參閱 "Azure NetApp Files" 組態:

  • 如果在將PV安裝至容器時發生問題、請確定 rpcbind 已安裝並執行。使用主機作業系統所需的套件管理程式、並檢查是否有 rpcbind 正在執行。您可以檢查的狀態 rpcbind 執行 systemctl status rpcbind 或同等產品。

  • 如果Trident後端報告其位於 failed 狀態儘管以前曾經工作過、但可能是因為變更與後端相關的SVM/admin認證資料所致。使用更新後端資訊 tridentctl update backend 或是退回Trident Pod即可解決此問題。

  • 如果您要升級Kubernetes叢集和(或)Trident以使用beta Volume Snapshot、請確定已完全移除所有現有的Alpha Snapshot CRS。然後您就可以使用 tridentctl obliviate alpha-snapshot-crd 刪除Alpha Snapshot CRD的命令。請參閱 "這篇部落格" 瞭解移轉Alpha快照所需的步驟。

  • 如果在容器執行時間安裝Trident with Docker時遇到權限問題、請嘗試使用安裝Trident --in cluster=false 旗標。這不會使用安裝程式pod、也會避免因為而發生權限問題 trident-installer 使用者:

  • 使用 uninstall parameter <Uninstalling Trident> 用於在執行失敗後進行清理。根據預設、指令碼不會移除Trident所建立的客戶需求日、即使在執行中的部署中、也能安全地解除安裝及再次安裝。

  • 如果您想要降級至舊版Trident、請先執行 tridenctl uninstall 移除Trident的命令。下載所需的 "Trident版本" 並使用安裝 tridentctl install 命令。只有在沒有建立新的PV、且尚未對現有的PV/後端/儲存類別進行任何變更時、才考慮降級。由於Trident現在使用CRD來維護狀態、因此所有建立的儲存實體(後端、儲存類別、PV和Volume Snapshot)都擁有 associated CRD objects <Kubernetes CustomResourceDefinition Objects> 而非寫入先前安裝版本Trident所使用之PV的資料。移回舊版時、新建立的PV將無法使用。*對物件所做的變更、例如後端、PV、儲存類別和Volume快照(已建立/更新/刪除)、在降級*時、Trident將無法看到。Trident安裝的舊版Trident所使用的PV、仍可供Trident查看。返回舊版不會中斷已使用舊版建立之PV的存取、除非已升級。

  • 若要完全移除Trident、請執行 tridentctl obliviate crd 命令。這會移除所有CRD物件、並取消定義客戶需求日。Trident將不再管理任何已配置的PV。

    註 之後需要從頭重新設定Trident。
  • 成功安裝之後、如果有一個PVc卡在中 Pending 階段、執行中 kubectl describe pvc 可提供有關Trident為何無法為此PVc配置PV的其他資訊。

使用操作員疑難排解不成功的Trident部署

如果您使用運算子部署Trident、則狀態為 TridentOrchestrator 變更來源 InstallingInstalled。如果您觀察到 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.