¿Cómo configuro la clase de almacenamiento en un clúster k0s existente?

¿Cómo configuro la clase de almacenamiento en un clúster k0s existente?

Cuando lo ejecuto, kos kubectl get storageclassnoto que no está aprovisionado y tengo que agregarlo manualmente. Sin embargo, no estoy seguro del procedimiento exacto. La [Documentación][https://docs.k0sproject.io/main/storage/] dice que k0s viene con OpenEBS instalado. De lo que no estoy seguro es de cómohabilitar esta extensiónen el archivo de configuración.

Mi archivo de configuración existente solo tiene esto (supongo que este debería ser el archivo de configuración predeterminado. ¿Es correcto?):

spec:
  api:
    externalAddress

Ejecuté k0s stopy luego modifiqué el archivo de configuración de la siguiente manera:

spec:
  api:
    externalAddress
  extensions:
    storage:
      type: openebs_local_storage

Después de este cambio de configuración, sigo recibiendo el mismo error: no se encontró ninguna clase de almacenamiento para el clúster. ¿Necesito también reinstalar/instalar k0s? Estoy un poco inseguro porque el k0s.yaml existente parece tener muy pocos parámetros de configuración en comparación con el ejemplo proporcionado en el enlace.

EDITAR: UsandoDocumentaciónProcedí a generar un nuevo k0s.yaml que utiliza la configuración predeterminada existente. Resulta que sobrescribe el k0s.yaml existente (indicado anteriormente): también efectué cambios en el nuevo archivo yaml para producir esto:

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

Después de este cambio procedo a hacer una reinstalación del cluster (con la nueva configuración):

k0s install controller -c /etc/k0s/k0s.yaml

pero ahora recibo un error:

Error: failed to install k0s service: failed to install service: Init already exists: /etc/systemd/system/k0scontroller.service

Respuesta1

Pude reproducir su problema: para reinstalar el clúster con la nueva configuración para el almacenamiento OpenEBS, deberá limpiar su configuración anterior:

  1. Detenga el servicio k0s.
sudo k0s stop
  1. Restablezca la instalación anterior que se realizó sin su archivo de configuración personalizado:
sudo k0s reset
  1. Reinstale k0s con su nuevo archivo de configuración y con --enable-workerla bandera -> para que se instale nuevamente k0s de nodo único con funciones de controlador y trabajador:
sudo k0s install controller --enable-worker -c /etc/k0s/k0s.yaml
  1. Inicie el servicio k0s:
sudo k0s start
  1. Después de unos segundos, verifique que haya dos clases de almacenamiento habilitadas en el clúster para su uso:
sudo k0s kubectl get storageclass

Las clases de almacenamiento tendrán volumeBindingMode: WaitForFirstConsumer, lo que significa que habrá un retraso para la vinculación del volumen hasta que el pod de la aplicación esté programado en el nodo.

información relacionada