Kubernetes
如何在現有 k0s 集群上配置儲存類
當我執行時,
kos kubectl get storageclass
我注意到它沒有被配置,我必須手動添加它。我不太確定確切的程序。這$$ Documentation $$$$ https://docs.k0sproject.io/main/storage/ $$說 k0s 安裝了 OpenEBS。我不確定如何在配置文件中啟用此擴展。 我現有的配置文件只有這個(我假設這應該是預設配置文件。這是正確的嗎?):
spec: api: externalAddress
我已經執行
k0s stop
然後修改了配置文件如下:spec: api: externalAddress extensions: storage: type: openebs_local_storage
在此配置更改之後,我仍然收到相同的錯誤,他們沒有為集群找到儲存類。我是否還需要重新安裝/安裝 k0s,我有點不確定,因為與連結中給出的範例相比,現有的 k0s.yaml 似乎只有很少的配置參數。
編輯:使用文件我已經開始生成一個使用現有預設設置的新 k0s.yaml。原來它覆蓋了現有的 k0s.yaml(如上所示):我還對新的 yaml 文件進行了更改以生成此文件:
apiVersion: k0s.k0sproject.io/v1beta1 kind: ClusterConfig metadata: creationTimestamp: null name: k0s spec: api: address: 10.XXX.XXX.XXX k0sApiPort: 9443 port: 6443 sans: - 10.XX.XX.XXX - 172.XX.XX.XXX - 10.XX.XX.XXX - 10.XX.XX.XXX - fe80::XXX:XXX:XXX:XXX - fe80::XXX:XXX:XXX:XXX - fe80::XXX:XXX:XXX:XXX - fe80::XXX:XXX:XXX:XXX - fe80::XXX:XXX:XXX:XXX - fe80::XXX:XXX:XXX:XXX tunneledNetworkingMode: false controllerManager: {} extensions: helm: charts: null repositories: null storage: create_default_storage_class: true type: openebs_local_storage images: calico: cni: image: docker.io/calico/cni version: v3.21.2 kubecontrollers: image: docker.io/calico/kube-controllers
在此更改之後,我繼續重新安裝集群(使用新配置):
k0s install controller -c /etc/k0s/k0s.yaml
但我現在收到一個錯誤:
Error: failed to install k0s service: failed to install service: Init already exists: /etc/systemd/system/k0scontroller.service
我能夠重現您的問題 - 為了使用 OpenEBS 儲存的新配置重新安裝集群,您需要清理之前的設置:
- 停止 k0s 服務。
sudo k0s stop
- 重置以前在沒有自定義配置文件的情況下完成的安裝:
sudo k0s reset
- 使用新的配置文件和標誌重新安裝 k0s
--enable-worker
-> 以便再次安裝具有控制器和工作程序功能的單節點 k0s:sudo k0s install controller --enable-worker -c /etc/k0s/k0s.yaml
- 啟動k0s服務:
sudo k0s start
- 幾秒鐘後,檢查集群上是否啟用了兩個儲存類供您使用:
sudo k0s kubectl get storageclass
儲存類將具有
volumeBindingMode: WaitForFirstConsumer
- 意思是,在節點上調度應用程序 pod 之前,卷綁定存在延遲。