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

疑難排解

貢獻者

請使用此處提供的指標來疑難排解安裝及使用Astra Trident時可能遇到的問題。

附註 如需Astra Trident的協助、請使用「tridentctl logs -A -n trident」建立支援套裝組合、並將其傳送至「NetApp支援<取得協助>」。
提示 秘訣:如需疑難排解文章的完整清單、請參閱 "NetApp知識庫(需要登入)"。您也可以找到Astra相關疑難排解問題的相關資訊 "請按這裡"

一般疑難排解

  • 如果Trident pod無法正常啟動(例如、當Trident pod卡在「ContainerCreating」階段、且只有兩個可用的容器)、則執行「kubechtl -n trident描述部署Trident」和「kubectl -n trident描述pod trident -」 提供更多洞見。取得kubelet記錄(例如透過「journalctl -xeu kubelet」)也很有幫助。

  • 如果Trident記錄中的資訊不足、您可以根據安裝選項、將「-d」旗標傳給安裝參數、嘗試啟用Trident的偵錯模式。

    然後使用「/tridentctl logs -n triident」確認偵錯設定、並在記錄中搜尋「level =偵錯msg」。

    與營運者一起安裝
    # kubectl patch torc trident -n <namespace> --type=merge -p '{"spec":{"debug":true}}'

    這會重新啟動所有Trident Pod、可能需要數秒鐘的時間。您可以查看輸出「kubecll Get pod - n triident」中的「年齡」欄位來檢查。

對於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」、以取得每個後端的偵錯記錄。例如、在Trident記錄中加入「debugTraceFlags:{"API":true、「method」:true、}」以取得API呼叫和方法反向。現有的後端可設定「debugTraceFlags」、設定為「tridentctl後端更新」。

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

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

  • 如果將PV掛載到容器時發生問題、請確定已安裝並執行「rpcbind」。使用主機作業系統所需的套件管理程式、檢查「rpcbind」是否正在執行。您可以執行「stystemctl狀態rpcbind」或其等效項目、來檢查「rpcbind」服務的狀態。

  • 如果Trident後端回報雖然曾經工作、但仍處於「失敗」狀態、則可能是因為變更與後端相關的SVM/admin認證資料所致。使用「tridentctl update backend」更新後端資訊、或是退回Trident pod、將可修正此問題。

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

  • 如果在容器執行時間安裝Trident with Docker時遇到權限問題、請嘗試使用「-in cluster =fals'」旗標來安裝Trident。這不會使用安裝程式Pod、也不會因為「Trident安裝程式」使用者而造成權限問題。

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

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

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

    附註 之後需要從頭重新設定Trident。
  • 成功安裝之後、如果某個永久虛擬磁碟卡在「Pending」(擱置)階段、執行「KECBECTL描述永久虛擬磁碟」可提供有關Trident為何無法為此永久虛擬磁碟配置PV的其他資訊。

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

如果您使用運算子來部署Trident、則「TridentOrchestrator」的狀態會從「安裝」變更為「安裝」。如果您看到「失敗」狀態、而且操作員本身無法恢復、您應該執行下列命令來檢查操作員的記錄:

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:
    Enable Node Prep:
    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'

此錯誤表示已存在用於安裝Trident的「TridentOrchestrator」。由於每個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」。或者、您也可以刪除「TridentOrchestrator」、然後使用修改後的準確定義來建立新定義。

疑難排解使用tridentctl進行不成功的Trident部署

為了協助您找出問題所在、您可以使用「-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.