Skip to main content
BeeGFS on NetApp with E-Series Storage
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

BeeGFS CSI 驅動程式部署故障排除

貢獻者 mcwhiteside

在排查 BeeGFS CSI 驅動程式部署問題時,請確保:

  • 所有先決條件均已滿足,包括 BeeGFS 用戶端的安裝和設定。

  • BeeGFS CSI 驅動程式已使用正確的覆蓋層進行部署。

  • 部署已驗證,任何錯誤(例如節點污點或啟用交換分區)均已解決。

  • 已部署並驗證範例應用程序,以確認其功能正常。

如需深入排除故障,請參閱"BeeGFS CSI 驅動程式 GitHub"

Kubernetes 設定 - 常見錯誤場景

嘗試檢索節點上所有目前正在運行的 Pod 時出現的範例錯誤:

kubectl get pods

錯誤輸出範例:

root@node@1:~# kubectl get pods
E0829 14:30:28.644318 5617 memcache.go:265)] "Unhandled Error" err="couldn't get current server API group list: Get \"https://XX.YYY.ZZ.CC:644
3: connect: connection refused"
...
 The connection to the server XX.YYY.ZZ.CC:6443 was refused - did you specify the right host or port?

解決這類問題時,有幾個關鍵領域需要調查。建議先檢查以下列出的各個方面。

containerd 出錯

檢查 containerd 守護程式的狀態:

systemctl status containerd

預期輸出:

root@node01:/home/user_id/beegfs-csi-driver# systemctl status containerd
o containerd.service - containerd container runtime
     Loaded: loaded (/lib/systemd/system/containerd.service; enabled; vendor preset: enabled)
     Active: inactive (dead)
     Docs: https://containerd.io

如果守護程式未執行(Active: inactive (dead)),重新啟動它。如果重新啟動後仍然無法執行,請檢查系統日誌是否有錯誤:

systemctl restart containerd
journalctl -u containerd

kubelet 出錯

檢查 kubelet 服務的狀態:

systemctl status kubelet

預期輸出:

root@node01:/home/user_id/beegfs-csi-driver# systemctl status kubelet
o kubelet.service - kubelet: The Kubernetes Node Agent
    Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendor preset: enabled)
    Drop-In: /usr/lib/systemd/system/kubelet.service.d
             └─10-kubeadm.conf
    Active: activating (auto-restart) (Result: exit-code) since Fri 2025-08-29 14:34:25 CDT; 6s ago
      Docs: https://kubernetes.io/docs/
     Process: 6636 ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG ARGS $KUBELET CONFIG ARGS $KUBELET KUBEADM ARGS
     $KUBELET_EXTRA ARGS (code=exited, status=1/FAILURE)
     Main PID: 6636 (code=exited, status=1/FAILURE)

如果服務未運行,請重新啟動它:

systemctl restart kubelet

如果問題仍然存在,請檢查系統日誌中的錯誤:

tail -f /var/log/syslog | grep kubelet

互換發行

如果遇到與「swap」相關的錯誤,請停用 swap 並重新啟動 kubelet。

swapoff -a
systemctl restart kubelet

預期輸出:

root@node01:/home/user_id/beegfs-csi-driver# systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node Agent
    Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendor preset: enabled)
    Drop-In: /usr/lib/systemd/system/kubelet.service.d
             └─10-kubeadm.conf
     Active: active (running) since Tue 2025-10-07 18:11:05 CDT; 5 days ago
       Docs: https://kubernetes.io/docs/
   Main PID: 1302401 (kubelet)
      Tasks: 58 (limit: 231379)
     Memory: 63.0M
     CGroup: /system.slice/kubelet.service
             └─1302401 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml conta>
註 交換分區通常在作業系統安裝過程中預設啟用,並列在以下位置: /etc/fstab Kubernetes 不支援啟用交換分割區運作。為防止重新啟動後重新啟用交換分割區,請註解掉所有交換分割區條目。 /etc/fstab

BeeGFS客戶端和輔助組態故障排除

  1. 查看配置 /etc/beegfs/beegfs-client.conf

    預設情況下,對於安全環境,BeeGFS 連線身份驗證應啟用。確保 `connDisableAuthentication`標誌位已設定為 `false`以及正確的路徑 `connAuthFile`已指定:

    connDisableAuthentication = false
    connAuthFile=/etc/beegfs/XXX.X.XX.X_connAuthFile
    註 如果您有意允許 BeeGFS 檔案系統在無需身份驗證的情況下連接,請進行以下設定 `connDisableAuthentication = true`並刪除或註解掉 `connAuthFile`範圍。
  2. 驗證管理服務的 IP 位址。 `sysMgmtdHost`參數設定正確。

  3. 更新路徑 connRDMAInterfacesFile`和 `connInterfacesFile。這些檔案指定用於儲存或節點間通訊的網路介面。例如:

    ibs1f0
    ibs1f1
  4. 更新路徑 `connAuthFile`參數(如果啟用身份驗證)。

    設定範例:

    connDisableAuthentication = false
    connAuthFile=/etc/beegfs/XXX.X.XX.X_connAuthFile
    connClientPortUDP=8004
    connMaxInternodeNum=128
    connMaxConcurrentAttempts=4
    connRDMABufNum=36
    connRDMABufSize=65536
    tuneFileCacheType=native
    tuneFileCacheBufSize=2097152
    connFallbackExpirationSecs=90
    connCommRetrySecs=600
    sysSessionChecksEnabled=False
    connRDMAInterfacesFile=/etc/beegfs/XXX.X.XX.X_8004_connInterfaces.conf
    sysMountSanityCheckMS=11000
    connRDMAKeyType=dma
    sysMgmtdHost=XXX.X.XX.X
    connInterfacesFile=/etc/beegfs/XXX.X.XX.X_8004_connInterfaces.conf
  5. 查看配置 /etc/beegfs/beegfs-helperd.conf

    與客戶端配置一樣,連接身份驗證預設情況下應該啟用。確保 `connDisableAuthentication`標誌位已設定為 `false`以及正確的路徑 `connAuthFile`已指定:

    connDisableAuthentication = false
    connAuthFile=/etc/beegfs/XXX.X.XX.X_connAuthFile
    註 如果您有意允許 BeeGFS 檔案系統在無需身份驗證的情況下連接,請進行以下設定 `connDisableAuthentication = true`並刪除或註解掉 `connAuthFile`範圍。

    輔助設定範例:

    # --- Section 1: [Settings] ---
    #
    connDisableAuthentication     = false
    connAuthFile                  = /etc/beegfs/XXX.X.XX.X_connAuthFile
    connHelperdPortTCP            = 8006
    connPortShift                 = 0
    logNoDate                     = false
    logNumLines                   = 50000
    logNumRotatedFiles            = 5
    logStdFile                    = /var/log/beegfs-client.log
    runDaemonized                 = true
    tuneNumWorkers                = 2

BeeGFS 控制器問題檢查

部署覆蓋層後,您可能會在 kubectl get all 的輸出中看到一些資源處於 PENDING 狀態。

root@node01:/home/user_id/beegfs-csi-driver# kubectl get all -n beegfs-csi
NAME                          READY   STATUS    RESTARTS   AGE
pod/csi-beegfs-controller-0   0/3     Pending   0          59s

豆莢 `Pending`狀態異常可能是由節點污點、資源限制、鏡像缺失或調度需求未滿足所引起的。查看 pod 事件和日誌以取得更多詳細資訊。如果狀態如上所示,請使用 describe 指令檢查已建立的 pod。

kubectl describe pod csi-beegfs-controller-0 -n beegfs-csi

如果您看到鏡像拉取錯誤或 pod 卡住, `ImagePullBackOff`驗證所有必需的鏡像是否都存在於 containerd 中(離線)或可從登錄機碼存取(線上)。請與以下人員聯絡:

kubectl describe pod <pod-name> -n beegfs-csi | grep -i image

檢查 Pod 日誌

如果一個 pod 無法啟動或處於下列狀態 `CrashLoopBackOff`狀態,請查看其日誌以了解更多詳情:

kubectl logs <pod-name> -n beegfs-csi

如果您遇到與「無法容忍的污點」相關的錯誤(可在 kubectl describe 的輸出中看到),如下所示:

Events:
  Type     Reason            Age   From               Message
  ----     ------            ----  ----               -------
  Warning  FailedScheduling  84s   default-scheduler  0/1 nodes are available: 1 node(s) had untolerated taint {node.kubernetes.io/disk-pressure: }. preemption: 0/1 nodes are available: 1 Preemption is not helpful for scheduling.

使用以下命令從節點中移除污點:

kubectl taint nodes node01 node-role.kubernetes.io/control-plane:NoSchedule-

預期輸出:

root@node01:/home/user_id/beegfs-csi-driver# kubectl taint nodes node01 node-role.kubernetes.io/control-plane:NoSchedule-
error: taint "node-role.kubernetes.io/control-plane:NoSchedule" not found

清除污點後,重新套用疊加層。這樣應該可以解決問題:

kubectl apply -k deploy/k8s/overlays/default