如何在现有的 k0s 集群上配置存储类

如何在现有的 k0s 集群上配置存储类

当我运行时,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 存储配置重新安装集群,您需要清理之前的设置:

  1. 停止 k0s 服务。
sudo k0s stop
  1. 重置以前没有使用自定义配置文件进行的安装:
sudo k0s reset
  1. 使用新的配置文件和标志 -> 重新安装 k0s,--enable-worker以便再次安装具有控制器和工作功能的单节点 k0s:
sudo k0s install controller --enable-worker -c /etc/k0s/k0s.yaml
  1. 启动k0s服务:
sudo k0s start
  1. 几秒钟后,检查集群上是否已启用两个存储类供您使用:
sudo k0s kubectl get storageclass

存储类将具有volumeBindingMode: WaitForFirstConsumer- 含义,即在应用程序 pod 在节点上调度之前,卷绑定会有延迟。

相关内容