探索 Kubernetes 持久化儲存之 Longhorn 初窺門徑

kubesphere發表於2024-07-25

作者:運維有術星主

在 Kubernetes 生態系統中,持久化儲存扮演著至關重要的角色,它是支撐業務應用穩定執行的基石。對於那些選擇自建 Kubernetes 叢集的運維架構師而言,選擇合適的後端持久化儲存解決方案是一項至關重要的選型決策。目前 Ceph、GlusterFS、NFS、openEBS 等解決方案已被廣泛採用。

往期文章,我分享過最簡單、實用的 探索 Kubernetes 持久化儲存之 NFS 終極實戰指南

為了豐富我們的技術棧,併為未來的容器雲平臺設計持久化儲存提供更多靈活性和選擇性。今天,我將跟大家一起探索,如何將 Longhorn 整合至 KubeSphere 管理的 Kubernetes 叢集。

本文核心內容概覽:

  • Longhorn 持久化儲存選型說明: 聊一聊 Longhorn 初體驗的感想
  • Longhorn 儲存服務如何部署: 如果利用 Helm 安裝 Longhorn
  • 實戰演示:建立測試資源,體驗 Longhorn 的效果。

實戰伺服器配置(架構 1:1 復刻小規模生產環境,配置略有不同)

主機名 IP CPU 記憶體 系統盤 資料盤 用途
ksp-registry 192.168.9.90 4 8 40 200 Harbor 映象倉庫
ksp-control-1 192.168.9.91 4 8 40 100 KubeSphere/k8s-control-plane
ksp-control-2 192.168.9.92 4 8 40 100 KubeSphere/k8s-control-plane
ksp-control-3 192.168.9.93 4 8 40 100 KubeSphere/k8s-control-plane
ksp-worker-1 192.168.9.94 4 16 40 100 k8s-worker/CI
ksp-worker-2 192.168.9.95 4 16 40 100 k8s-worker
ksp-worker-3 192.168.9.96 4 16 40 100 k8s-worker
ksp-storage-1 192.168.9.97 4 8 40 400+ Containerd、OpenEBS、ElasticSearch/Longhorn/Ceph/NFS
ksp-storage-2 192.168.9.98 4 8 40 300+ Containerd、OpenEBS、ElasticSearch/Longhorn/Ceph
ksp-storage-3 192.168.9.99 4 8 40 300+ Containerd、OpenEBS、ElasticSearch/Longhorn/Ceph
ksp-gpu-worker-1 192.168.9.101 4 16 40 100 k8s-worker(GPU NVIDIA Tesla M40 24G)
ksp-gpu-worker-2 192.168.9.102 4 16 40 100 k8s-worker(GPU NVIDIA Tesla P100 16G)
ksp-gateway-1 192.168.9.103 2 4 40 自建應用服務代理閘道器/VIP:192.168.9.100
ksp-gateway-2 192.168.9.104 2 4 40 自建應用服務代理閘道器/VIP:192.168.9.100
ksp-mid 192.168.9.105 4 8 40 100 部署在 k8s 叢集之外的服務節點(Gitlab 等)
合計 15 56 152 600 2100+

實戰環境涉及軟體版本資訊

  • 作業系統:openEuler 22.03 LTS SP3 x86_64
  • KubeSphere:v3.4.1
  • Kubernetes:v1.28.8
  • KubeKey: v3.1.1
  • Containerd:1.7.13
  • NVIDIA GPU Operator:v24.3.0
  • NVIDIA 顯示卡驅動:550.54.15
  • Longhorn:v1.6.2

1. Longhorn 初體驗

為了貼近生產需求,我在規劃部署時增加了一些想法:

想法 1: 儲存節點規劃:

  • 向 Kubernetes 叢集增加三個節點,專門用於 Longhorn 儲存服務
  • Longhorn 儲存服務所有元件和資料盤都部署在專屬節點
  • 每個儲存節點打上專屬標籤 kubernetes.io/storage=longhorn,部署 Longhorn 服務時使用 nodeSelector 指定節點標籤 (不指定會預設使用所有 Worker 節點)
  • 業務負載部署在叢集中其他 Worker 節點,使用 Longhorn 提供的持久化儲存

想法 2: 儲存空間使用規劃:

  • 每個儲存節點新增一塊 Longhorn 專用的 100G 資料盤 /dev/sdc,使用 LVM 型別將其格式化,掛載到 /longhorn 目錄
  • 更改 Longhorn 預設儲存路徑 /var/lib/longhorn/longhorn

很遺憾,在實際部署 Longhorn 時,想法 1 沒有完全實現,Longhorn 儲存服務所有元件可以部署在指定節點,後期建立 Pod 測試時發現,當 Pod 分配的 Worker 節點不安裝 Longhorn CSI 外掛,Pod 建立異常。但是,Longhorn CSI 外掛又無法獨立安裝(也可能我技術太菜,沒找到)。

最終,為了按規劃完成部署,我執行了以下操作:

  • 部署測試時分別體驗了 Kubectl 和 Helm 兩種方式,最終成文時選擇了 Helm
  • Helm 部署時使用 set 引數指定自定義預設儲存路徑、指定 nodeSelector 部署所有 Longhorn 元件
  • 建立測試 Pod 時,也帶上 nodeSelector 標籤(執行在其他 Worker 節點的 Pod,無法使用 Longhorn 儲存)

整個部署過程比較艱辛,使用 Helm 部署失敗或是部署過程異常終止後,想要解除安裝很難、很麻煩

簡單的說幾句 Longhorn 初體驗後的想法(僅代表個人觀點):

  • 因為加了自定義規劃的想法,所以,初次體驗感較差。

  • 對於新手而言,按照官方文件使用預設配置部署,能獲得較好的 Longhorn 初體驗(實測

  • Longhorn 有自身的特性優點,發展至今已經存在一定的生產使用者。但是,沒有一定的技術實力,不建議碰 Longhorn

  • 可以部署體驗,瞭解 Longhorn 是什麼樣子,能提供什麼,有什麼優秀特性

  • 官方文件資料看著很多,但是實際使用中出現問題的話,能搜到的可參考文件太少,沒一定的技術底蘊,還是不要碰了

  • 目前來看,替代 GlusterFS、NFS 的持久化儲存方案,我寧可選擇去征服 Ceph 也不會選擇 Longhorn(Ceph 更成熟,文件資料更多,獲得技術支援的途徑多

重要說明:

  • 由於部署過程中,定製化配置的結果不盡人意。所以,本文最終變成了淺嘗輒止、拋磚引玉之作。歡迎各位 Longhorn 專家,留言、賜教
  • 本文的內容對於安裝部署 Longhorn 有一定的借鑑意義,但是 切勿將本文的實戰過程用於任何型別的正式環境

2. 前置條件

2.1 擴容儲存專用 Worker 節點

將新增的三臺儲存專用節點加入已有的 Kubernetes 叢集,詳細的擴容操作請參考 KubeKey 擴容 Kubernetes Worker 節點實戰指南

2.2 初始化資料盤

按規劃將 /dev/sdc 初始化,編輯檔案 /etc/fstab,將 /longhorn 目錄對應的磁碟配置為開機自動掛載。

LVM 配置比較簡單,操作細節不做解釋,直接上命令。

pvcreate /dev/sdc
vgcreate longhorn /dev/sdc
lvcreate -l 100%VG longhorn -n data
mkfs.xfs /dev/mapper/longhorn-data
mkdir /longhorn
mount /dev/mapper/longhorn-data /longhorn
tail -1 /etc/mtab >> /etc/fstab

2.3 安裝 NFSv4 客戶端

在 Longhorn 系統中, 備份功能需要 NFSv4, v4.1 或是 v4.2, 同時, ReadWriteMany (RWX) 卷功能需要 NFSv4.1。因此,需要提前安裝 NFSv4 客戶端。

yum install nfs-utils

2.4 安裝 open-iscsi

必要元件,Longhorn 依賴主機上的 iscsiadm 向 Kubernetes 提供持久卷。

yum --setopt=tsflags=noscripts install iscsi-initiator-utils
echo "InitiatorName=$(/sbin/iscsi-iname)" > /etc/iscsi/initiatorname.iscsi
systemctl enable iscsid
systemctl start iscsid

2.5 檢查 Kubernetes 版本

執行以下命令檢查 Kubernetes 版本,確保輸出結果中 Server Version 大於等於 v1.21。

$ kubectl version
Client Version: v1.28.8
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.28.8

2.6 使用環境檢查指令碼

Longhorn 官方編寫了一個 shell 指令碼,幫助我們蒐集評估叢集環境是否滿足部署要求。

  • 在 Control-1 節點下載指令碼
curl -sSfL https://raw.githubusercontent.com/longhorn/longhorn/v1.6.2/scripts/environment_check.sh -o environment_check.sh
  • 執行指令碼
sh environment_check.sh

正確執行後,輸出結果如下 :

$ sh environment_check.sh
[INFO]  Required dependencies 'kubectl jq mktemp sort printf' are installed.
[INFO]  All nodes have unique hostnames.
[INFO]  Waiting for longhorn-environment-check pods to become ready (0/0)...
[INFO]  All longhorn-environment-check pods are ready (8/8).
[INFO]  MountPropagation is enabled
[INFO]  Checking kernel release...
[INFO]  Checking iscsid...
[INFO]  Checking multipathd...
[INFO]  Checking packages...
[INFO]  Checking nfs client...
[INFO]  Cleaning up longhorn-environment-check pods...
[INFO]  Cleanup completed.

環境檢查過程及結果簡要說明:

  • 該指令碼執行過程中會從 DockerHub 下載 alpine:3.12 映象,用於測試。如果下載失敗,請自行修改為能正常下載的映象地址。
  • 該指令碼會在所有 Worker 節點下載 longhorn-environment-check pods,並執行相應的檢查命令
  • 建議所有 Worker 節點系統核心大於等於 5.8,提前安裝 NFSv4 客戶端、安裝 open-iscsi

確保所有配置滿足前置條件要求,環境檢查指令碼檢測成功後。接下來,我們正式開始安裝 Longhorn 元件。

3. 安裝配置 Longhorn

Longhorn 官方文件中提供多種安裝方式的幫助文件:

  • Install as a Rancher Apps & Marketplace
  • Install with Kubectl
  • Install with Helm
  • Install with Fleet
  • Install with Flux
  • Install with ArgoCD
  • Air Gap Installation

我最初的計劃是,實戰演示使用原生的 Kubectl 客戶端安裝 Longhorn。無奈在部署過程中遇到了自定義配置困難的問題,雖然能搞,但是有點麻煩,最終沒有找到靈活、簡單的方案。所以,最終成文時改成了 Helm 方式。

3.1 設定儲存標籤

  • 按規劃給三個儲存節點打上專屬標籤
kubectl label nodes ksp-storage-1 kubernetes.io/storage=longhorn
kubectl label nodes ksp-storage-2 kubernetes.io/storage=longhorn
kubectl label nodes ksp-storage-3 kubernetes.io/storage=longhorn

3.2 使用 Helm 安裝部署 Longhorn

  • 新增 Longhorn Helm repository
helm repo add longhorn https://charts.longhorn.io
  • 從 Repository 拉取最新的 Charts
helm repo update
  • 官方預設的部署命令(本文未用,建議新手使用
helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace --version 1.6.2
  • 根據部署規劃,執行自定義部署命令
helm install longhorn2 longhorn/longhorn \
  --namespace longhorn-system \
  --create-namespace \
  --version 1.6.2 \
  --set defaultSettings.defaultDataPath="/longhorn" \
  --set defaultSettings.systemManagedComponentsNodeSelector="kubernetes.io/storage:longhorn" \
  --set longhornManager.nodeSelector."kubernetes\.io/storage"=longhorn \
  --set longhornUI.nodeSelector."kubernetes\.io/storage"=longhorn \
  --set longhornDriver.nodeSelector."kubernetes\.io/storage"=longhorn
  • 檢查 Longhorn 部署結果
$ kubectl -n longhorn-system get pod

正確部署,輸出結果如下 :

$ kubectl -n longhorn-system get pod -o wide
NAME                                                READY   STATUS    RESTARTS   AGE     IP             NODE            NOMINATED NODE   READINESS GATES
csi-attacher-fffb968d8-gnj58                        1/1     Running   0          4m58s   10.233.77.66   ksp-storage-3   <none>           <none>
csi-attacher-fffb968d8-pk2vq                        1/1     Running   0          4m58s   10.233.73.59   ksp-storage-2   <none>           <none>
csi-attacher-fffb968d8-w6rfh                        1/1     Running   0          4m58s   10.233.64.62   ksp-storage-1   <none>           <none>
csi-provisioner-745d97cc98-2r96q                    1/1     Running   0          4m58s   10.233.64.63   ksp-storage-1   <none>           <none>
csi-provisioner-745d97cc98-n9drv                    1/1     Running   0          4m57s   10.233.77.67   ksp-storage-3   <none>           <none>
csi-provisioner-745d97cc98-zvn7b                    1/1     Running   0          4m57s   10.233.73.60   ksp-storage-2   <none>           <none>
csi-resizer-58c5999fd6-5982f                        1/1     Running   0          4m57s   10.233.73.61   ksp-storage-2   <none>           <none>
csi-resizer-58c5999fd6-7z4m9                        1/1     Running   0          4m57s   10.233.64.64   ksp-storage-1   <none>           <none>
csi-resizer-58c5999fd6-zxszp                        1/1     Running   0          4m57s   10.233.77.68   ksp-storage-3   <none>           <none>
csi-snapshotter-5d995448d9-7tcrn                    1/1     Running   0          4m57s   10.233.77.69   ksp-storage-3   <none>           <none>
csi-snapshotter-5d995448d9-l84vr                    1/1     Running   0          4m57s   10.233.64.65   ksp-storage-1   <none>           <none>
csi-snapshotter-5d995448d9-v9c54                    1/1     Running   0          4m57s   10.233.73.62   ksp-storage-2   <none>           <none>
engine-image-ei-ffd6ed9b-8f6k7                      1/1     Running   0          5m7s    10.233.77.63   ksp-storage-3   <none>           <none>
engine-image-ei-ffd6ed9b-x2ld9                      1/1     Running   0          5m7s    10.233.73.57   ksp-storage-2   <none>           <none>
engine-image-ei-ffd6ed9b-zdpsb                      1/1     Running   0          5m7s    10.233.64.60   ksp-storage-1   <none>           <none>
instance-manager-561847cbad61a658e57dbb9aa2ea827d   1/1     Running   0          5m7s    10.233.77.64   ksp-storage-3   <none>           <none>
instance-manager-74249bf3bf13f051b14d39af24d9e46c   1/1     Running   0          5m7s    10.233.64.61   ksp-storage-1   <none>           <none>
instance-manager-f7b59324b33e30e62b1aacf332a7c3c1   1/1     Running   0          5m7s    10.233.73.58   ksp-storage-2   <none>           <none>
longhorn-csi-plugin-jknqd                           3/3     Running   0          4m57s   10.233.73.63   ksp-storage-2   <none>           <none>
longhorn-csi-plugin-l7px4                           3/3     Running   0          4m57s   10.233.77.70   ksp-storage-3   <none>           <none>
longhorn-csi-plugin-m5bcp                           3/3     Running   0          4m57s   10.233.64.66   ksp-storage-1   <none>           <none>
longhorn-driver-deployer-55c5f59d77-xz5vd           1/1     Running   0          5m14s   10.233.77.61   ksp-storage-3   <none>           <none>
longhorn-manager-nxks5                              1/1     Running   0          5m14s   10.233.77.62   ksp-storage-3   <none>           <none>
longhorn-manager-r7qf6                              1/1     Running   0          5m14s   10.233.64.58   ksp-storage-1   <none>           <none>
longhorn-manager-xbgtd                              1/1     Running   0          5m14s   10.233.73.55   ksp-storage-2   <none>           <none>
longhorn-ui-6fd7f57659-ff7wl                        1/1     Running   0          5m14s   10.233.64.59   ksp-storage-1   <none>           <none>
longhorn-ui-6fd7f57659-v6kpb                        1/1     Running   0          5m14s   10.233.73.56   ksp-storage-2   <none>           <none>

注意:上述配置雖然實現了所有元件都部署在專屬儲存節點上。但是,實際無法正常使用,排程在叢集其他節點的 Pod 根本無法使用 Longhorn 提供的儲存。

3.3 開啟 UI

官方預設的 Longhorn UI,沒有開啟認證功能,開啟即暴露所有能力。官方目前給出的加密認證方案,需要配合 Ingress controller 使用。

本文只是屬於體驗測試環境,也沒打算在測試、生產環境使用。因此直接使用 nodePort 放開 Longhorn UI 服務。

更多資訊請參考官方文件, 建立一個具有基本認證功能的 NGINX Ingress 控制器

  • 編輯使用 NodePort 型別的 svc 資源清單,vi longhorn-ui-svc.yaml
kind: Service
apiVersion: v1
metadata:
  name: longhorn-ui-nodeport
  namespace: longhorn-system
  labels:
    app: longhorn-ui
spec:
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: http
      nodePort: 32222
  selector:
    app: longhorn-ui
  clusterIP:
  type: NodePort
  • 建立 svc
kubectl apply -f longhorn-ui-svc.yaml
  • 訪問 Longhorn UI

開啟瀏覽器訪問,http://叢集任意節點IP:32222

4. 驗證測試

4.1 建立測試 PVC

  • 編寫測試 PVC 資源清單,vi test-pvc-longhorn.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: test-pvc-longhorn
spec:
  storageClassName: longhorn
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 2Gi
  • 建立 PVC
kubectl apply -f test-pvc-longhorn.yaml
  • 檢視 PVC
$ kubectl get pvc -o wide
NAME                STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE   VOLUMEMODE
test-pvc-longhorn   Bound    pvc-d5a7fc28-2e4c-4f9d-b4d7-7cb7ca5a7ea7   2Gi        RWX            longhorn       7s    Filesystem

4.2 建立測試 Pod

為了正常完成測試,建立 Pod 時指定 nodeSelector 標籤,將 Pod 建立在 Longhorn 專用節點。

  • 編寫測試 Pod 資源清單,vi test-pod-longhorn.yaml
kind: Pod
apiVersion: v1
metadata:
  name: test-pod-longhorn
spec:
  containers:
  - name: test-pod-longhorn
    image: busybox:stable
    command:
      - "/bin/sh"
    args:
      - "-c"
      - "touch /mnt/SUCCESS && sleep 3600"
    volumeMounts:
      - name: longhorn-pvc
        mountPath: "/mnt"
  restartPolicy: "Never"
  nodeSelector:
    kubernetes.io/storage: longhorn
  volumes:
    - name: longhorn-pvc
      persistentVolumeClaim:
        claimName: test-pvc-longhorn
  • 建立 Pod
kubectl apply -f test-pod-longhorn.yaml
  • 檢視 Pod
$ kubectl get pods -o wide
NAME                READY   STATUS    RESTARTS   AGE   IP             NODE            NOMINATED NODE   READINESS GATES
test-pod-longhorn   1/1     Running   0          51s   10.233.73.80   ksp-storage-2   <none>           <none>
  • 檢視 Pod 掛載的儲存
$ kubectl exec test-pod-longhorn -- df -h
Filesystem                Size      Used Available Use% Mounted on
overlay                  99.9G      4.7G     95.2G   5% /
tmpfs                    64.0M         0     64.0M   0% /dev
tmpfs                     3.6G         0      3.6G   0% /sys/fs/cgroup
10.233.57.220:/pvc-d5a7fc28-2e4c-4f9d-b4d7-7cb7ca5a7ea7
                          1.9G         0      1.9G   0% /mnt
/dev/mapper/openeuler-root
                         34.2G      2.3G     30.2G   7% /etc/hosts
/dev/mapper/openeuler-root
                         34.2G      2.3G     30.2G   7% /dev/termination-log
/dev/mapper/data-lvdata
                         99.9G      4.7G     95.2G   5% /etc/hostname
/dev/mapper/data-lvdata
                         99.9G      4.7G     95.2G   5% /etc/resolv.conf
shm                      64.0M         0     64.0M   0% /dev/shm
tmpfs                     6.4G     12.0K      6.4G   0% /var/run/secrets/kubernetes.io/serviceaccount
tmpfs                     3.6G         0      3.6G   0% /proc/acpi
tmpfs                    64.0M         0     64.0M   0% /proc/kcore
tmpfs                    64.0M         0     64.0M   0% /proc/keys
tmpfs                    64.0M         0     64.0M   0% /proc/timer_list
tmpfs                    64.0M         0     64.0M   0% /proc/sched_debug
tmpfs                     3.6G         0      3.6G   0% /proc/scsi
tmpfs                     3.6G         0      3.6G   0% /sys/firmware
  • 測試儲存空間讀寫
# 寫入 1GB 的資料
$ kubectl exec test-pod-longhorn -- dd if=/dev/zero of=/mnt/test-disk.img bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1000.0MB) copied, 5.670424 seconds, 176.4MB/s

# 檢視結果
$ kubectl exec test-pod-longhorn -- ls -lh /mnt/
[root@ksp-control-1 srv]# kubectl exec test-pod-longhorn -- ls -lh /mnt/
total 1000M
-rw-r--r--    1 root     root           0 Jul 17 01:03 SUCCESS
drwx------    2 root     root       16.0K Jul 17 01:03 lost+found
-rw-r--r--    1 root     root     1000.0M Jul 17 01:04 test-disk.img

# 測試超限(再寫入 1GB 資料)
$ kubectl exec test-pod-longhorn -- dd if=/dev/zero of=/mnt/test-disk2.img bs=1M count=1000
dd: /mnt/test-disk2.img: No space left on device
command terminated with exit code 1

注意:測試時,我們寫入了 2G 的資料量,當達過我們建立的 PVC 2G 容量上限時會報錯(實際使用寫不滿 2G)。說明,Longhorn 儲存可以做到容量配額限制。

4.3 檢視底層儲存資訊

測試並不充分,只是簡單看看。在儲存伺服器( ksp-storage-1 節點),執行以下命令。

$ ls -lR /longhorn/
/longhorn/:
total 4
-rw-r--r-- 1 root root 51 Jul 16 11:18 longhorn-disk.cfg
drwxr-xr-x 3 root root 63 Jul 17 01:02 replicas

/longhorn/replicas:
total 0
drwx------ 2 root root 108 Jul 17 01:03 pvc-d5a7fc28-2e4c-4f9d-b4d7-7cb7ca5a7ea7-3a7acff9

/longhorn/replicas/pvc-d5a7fc28-2e4c-4f9d-b4d7-7cb7ca5a7ea7-3a7acff9:
total 2075652
-rw------- 1 root root       4096 Jul 17 01:06 revision.counter
-rw-r--r-- 1 root root 2147483648 Jul 17 01:06 volume-head-000.img
-rw-r--r-- 1 root root        126 Jul 17 01:02 volume-head-000.img.meta
-rw-r--r-- 1 root root        142 Jul 17 01:03 volume.meta

注意:Longhorn 的儲存目錄,跟 NFS 儲存不一樣,無法直接檢視原始檔案,使用上更安全,但是如果 Longhorn 異常,想要找回資料也更麻煩。

4.4 清理測試資源

  • 清理測試 Pod、PVC
kubectl delete -f test-pod-longhorn.yaml -f test-pvc-longhorn.yaml
  • 在儲存伺服器( ksp-storage-1 節點)檢視資料目錄
$ ls -lR /longhorn/replicas/
/longhorn/replicas/:
total 0

從結果中可以看到,Kubernetes 刪除 PVC 後,Longhorn 儲存層立即刪除 PVC 對應的資料目錄及資料(是否能配置預設保留,暫未研究,理論上應該會有)。

4.5 測試異常說明

建立 Pod,不指定 nodeSelector 標籤,Pod 會隨機分配,當分配在沒有安裝 Longhorn CSI 外掛的節點時,建立失敗,異常如下。

為避免出現上述問題,建議在部署 Longhorn 時遵循預設配置,以實現在所有 Worker 節點上自動部署所需的服務元件。

5. KubeSphere 控制檯管理儲存資源

5.1 管理儲存類

在控制檯左側功能選單,依次選擇「叢集」->「儲存」->「儲存類」。

5.2 檢視持久卷宣告

Step 1: 在控制檯左側功能選單,依次選擇「叢集」->「儲存」->「持久卷宣告」。

Step 2: 檢視建立的 PVC、PV 及詳情。

結果中可以顯示 PVC 的儲存總容量、剩餘容量、已使用百分比、Inode 用量百分比。

6. Longhorn UI 概覽

Longhorn UI 雖然介面簡單,但是能滿足日常管理的需要,能在介面實現分配儲存資源、管理,實現 Longhorn 服務的基本配置管理,下面展示幾張截圖,作為本文的結尾。

  • Dashboard

  • Node 資訊

  • Volume 資訊

  • Setting 配置頁

免責宣告:

  • 筆者水平有限,儘管經過多次驗證和檢查,盡力確保內容的準確性,但仍可能存在疏漏之處。敬請業界專家大佬不吝指教。
  • 本文所述內容僅透過實戰環境驗證測試,讀者可學習、借鑑,但嚴禁直接用於生產環境由此引發的任何問題,作者概不負責

本文由部落格一文多發平臺 OpenWrite 釋出!

相關文章