
Ich betreibe einen K3s-Cluster auf RPi4 mit heterogener Konfiguration (ein Knoten hat eine Festplatte mit hoher Kapazität, aber langsamer Geschwindigkeit, ein anderer hat ein SSD-Laufwerk, ein dritter hat nur eine SD-Karte).
Ich habe persistente Volumes und Ansprüche der Art „lokaler Pfad“, die je nach Bedarf an Knoten und Pods angehängt sind.
Ich stehe vor einer Situation, in der ich einen Pod auf dem Knoten ohne Festplatte einplanen muss, um die im Knoten mit der SSD-Festplatte gespeicherten Daten zu verarbeiten (einige Videodateien mit FFMPEG neu in MP4 kodieren. Da dies ein teurer Prozess ist, möchte ich dies auf einem inaktiven Knoten tun und den Knoten, auf dem die SSD läuft, nicht verlangsamen).
Ist es möglich, ein PV transparent von einem anderen Knoten aus zu mounten? Muss ich ein NFS verwenden? Gibt es einen weiterentwickelten Volume-Typ, der in einem Bare-Metal-RPi4 verwendet werden kann, um das zu tun, was ich will?
Ein Blick in die Dokumentation hat nicht viel geholfen (es gibt Unmengen verschiedener persistenter Datenträgertypen, für die aber nicht viele Anwendungsfälle beschrieben werden).
Danke
Antwort1
Ich denke, Sie könnten interessiert sein anProjekt Longshorn.
Es handelt sich um eine persistente Speicherimplementierung für jeden Kubernetes-Cluster und verwendet die vorhandenen Festplatten Ihrer Kubernetes-Knoten, um replizierten und stabilen Speicher für Ihre Kubernetes-Pods bereitzustellen.
Wie beschrieben aufLonghorn-Github:
Longhorn ist leicht, zuverlässig und leistungsstark. Sie können Longhorn auf einem vorhandenen Kubernetes-Cluster mit einem kubectl apply-Befehl oder mithilfe von Helm-Charts installieren. Sobald Longhorn installiert ist, fügt es dem Kubernetes-Cluster persistente Volume-Unterstützung hinzu.
Und das Beste ist, Sie können das intuitive GUI-Dashboard verwenden, um anzupassenLonghornauf Ihre Bedürfnisse.
Notiz:Zurzeit unterstützt Longhorn nuramd64.
Installation
Im folgenden Beispiel zeige ich Ihnen, wie Sie installierenLanghorn.
Zunächst muss open-iscsi
auf jedem Clusterknoten Folgendes installiert sein. Sie müssen es beispielsweise folgendermaßen installieren:
apt-get install open-iscsi
Als nächstes wenden Sie die longhorn.yaml
Installation anLonghorn:
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml
Erstellen Sie dann ein longhorn
StorageClass
(Sie können es später mit anpassen ConfigMap
)
kubectl apply -f https://raw.githubusercontent.com/rancher/longhorn/master/deploy/longhorn.yaml
Das ist alles, was wir brauchen, um zu verwendenLonghorn:)
Longhorn-Benutzeroberfläche
Wie ich bereits beschrieben habe, können wir hilfreiche GUI-Dashboards verwenden,HierSie können herausfinden, wie Sie darauf zugreifen können.
Darüber hinaus müssen Sie das Dashboard möglicherweise der Außenwelt zugänglich machen, Ingress
wie beschriebenHier
Die Verwendung Longhorn UI
des Dashboards ist ziemlich intuitiv. Auf der Registerkarte „Knoten“ können Sie beispielsweise einfach Knoten angeben, die speziell für die Bereitstellung von Speicher vorgesehen sind.
Longhorn-Speicherklasse
Sie können die Anpassung vornehmen longhorn
StorageClass
, indem Sie den Namespace bearbeiten longhorn-storageclass
ConfigMap
. longhorn-system
Ich habe beispielsweise numberOfReplicas
den Parameter von 3
(Standard) in Folgendes geändert 1
:
root@kmaster:~# kubectl describe sc longhorn
Name: longhorn
IsDefaultClass: No
Annotations: longhorn.io/last-applied-configmap=kind: StorageClass
apiVersion: storage.k8s.io/v1
...
parameters:
numberOfReplicas: "1"
staleReplicaTimeout: "2880"
fromBackup: ""
...