当我运行时,kos kubectl get storageclass
我注意到它没有配置,我必须手动添加它。但我不太确定具体步骤。[文档][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
答案1
我能够重现您的问题 - 为了使用新的 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 在节点上调度之前,卷绑定会有延迟。