Wie konfiguriere ich die Speicherklasse auf einem vorhandenen K0s-Cluster?

Wie konfiguriere ich die Speicherklasse auf einem vorhandenen K0s-Cluster?

Beim Ausführen kos kubectl get storageclassstelle ich fest, dass es nicht bereitgestellt ist und ich es manuell hinzufügen muss. Ich bin mir jedoch über das genaue Verfahren nicht ganz sicher. In der [Dokumentation][https://docs.k0sproject.io/main/storage/] steht, dass k0s mit installiertem OpenEBS geliefert wird. Ich bin mir jedoch nicht sicher, wie ichAktivieren Sie diese Erweiterungin der Konfigurationsdatei.

Meine vorhandene Konfigurationsdatei enthält nur Folgendes (ich nehme an, dies sollte die Standardkonfigurationsdatei sein. Ist das richtig?):

spec:
  api:
    externalAddress

k0s stopIch habe die Konfigurationsdatei ausgeführt und dann wie folgt geändert:

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

Nach dieser Konfigurationsänderung erhalte ich immer noch denselben Fehler, dass keine Speicherklasse für den Cluster gefunden wurde. Muss ich auch k0s neu installieren/installieren? Ich bin mir nicht sicher, da die vorhandene k0s.yaml im Vergleich zu dem im Link angegebenen Beispiel sehr wenige Konfigurationsparameter zu haben scheint.

EDIT: VerwendenDokumentationIch habe nun eine neue k0s.yaml-Datei erstellt, die die vorhandenen Standardeinstellungen verwendet. Es stellte sich heraus, dass sie die vorhandene k0s.yaml-Datei (siehe oben) überschreibt: Ich habe auch Änderungen an der neuen YAML-Datei vorgenommen, um Folgendes zu erstellen:

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

Nach dieser Änderung führe ich eine Neuinstallation des Clusters durch (mit der neuen Konfiguration):

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

aber jetzt bekomme ich eine Fehlermeldung:

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

Antwort1

Ich konnte Ihr Problem reproduzieren. Um den Cluster mit der neuen Konfiguration für den OpenEBS-Speicher neu zu installieren, müssen Sie Ihre vorherige Einrichtung bereinigen:

  1. Stoppen Sie den k0s-Dienst.
sudo k0s stop
  1. Setzen Sie die vorherige Installation zurück, die ohne Ihre benutzerdefinierte Konfigurationsdatei durchgeführt wurde:
sudo k0s reset
  1. Installieren Sie k0s mit Ihrer neuen Konfigurationsdatei und mit --enable-workerdem Flag -> erneut, sodass Single-Node-k0s mit Controller- und Worker-Funktionen erneut installiert werden:
sudo k0s install controller --enable-worker -c /etc/k0s/k0s.yaml
  1. Starten Sie den k0s-Dienst:
sudo k0s start
  1. Überprüfen Sie nach einigen Sekunden, ob im Cluster zwei Speicherklassen aktiviert sind, die Sie verwenden können:
sudo k0s kubectl get storageclass

Die Speicherklassen haben volumeBindingMode: WaitForFirstConsumerfolgende Bedeutung: Es gibt eine Verzögerung bei der Volume-Bindung, bis der Anwendungs-Pod auf dem Knoten geplant ist.

verwandte Informationen