k3s: 修改 default storage class



前言

在用 k3s 時預設都會部署 local-path (StorageClass),方便管理 storage。

但有時候又會碰上需要安裝 longhorn 或是其他 storage 的需求,這時候要手動調整 default 的 StorageClass

這邊記錄一下如何調整。



說明

假設你額外安裝 longhorn、且要更新預設的 StorageClass

  • 安裝步驟參考這邊。

安裝了 longhorn 之後,會產生一個新的 StorageClass

如果我們希望 longhorn 的 StorageClass 成為 default,接著就要手動調整;

如果你希望維持原狀 — 預設採用 local-path,那就不用做額外的處理。


編輯 k3s 的 local-storage.yaml

k3s 會在服務重啟時,讀取預設的 yaml 檔案。

所以要手動更新 local-storage.yaml,才能讓 k3s 在重啟之後,不會覆蓋既有的設定

1
vim /var/lib/rancher/k3s/server/manifests/local-storage.yaml

找到 StorageClass 的部分,將 is-default-class: "true" 改成 false

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14

...

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: local-path
  annotations:
    storageclass.kubernetes.io/is-default-class: "false"  # 這裡
provisioner: rancher.io/local-path
volumeBindingMode: WaitForFirstConsumer
reclaimPolicy: Delete

...

Note

  1. 如果你的 k3s 是 cluster,每一個 master node 都要更新這個 yaml 檔。

更新既有的 local-path 設定

1
kubectl edit sc local-path

is-default-class: "true" 改成 false

1
2
3
4
5
6
7
8
9
...

kind: StorageClass
metadata:
  name: local-path
  annotations:
    storageclass.kubernetes.io/is-default-class: "false"

...

依樣畫葫蘆,

1
kubectl edit sc longhorn

longhornis-default-class 改成 true

1
2
3
4
5
6
7
8
9
...

kind: StorageClass
metadata:
  name: longhorn
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"

...


重啟 k3s service 驗證設定沒有被覆蓋

1
sudo systemctl restart k3s

Note

  1. 如果你的 k3s 是 cluster,每一個 master node 都要重啟服務驗證。
  2. 在各個 master 重啟時,要預留時間,等前一個 node 恢復服務再做下一個,避免造成 downtime。

然後可以驗證 default 是否生效:

1
2
3
4
5
6
kubectl get sc

# Output
NAME                   PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
local-path             rancher.io/local-path   Delete          WaitForFirstConsumer   false                  82d
longhorn (default)     driver.longhorn.io      Delete          Immediate              true                   7h20m



REF

  1. https://github.com/k3s-io/k3s/discussions/3445

主題 StackJimmy 設計