Planen Sie Pod auf einem Knoten und greifen Sie auf PV auf einem anderen Knoten zu

Planen Sie Pod auf einem Knoten und greifen Sie auf PV auf einem anderen Knoten zu

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-iscsiauf 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.yamlInstallation 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, Ingresswie beschriebenHier

Die Verwendung Longhorn UIdes 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-systemIch habe beispielsweise numberOfReplicasden 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: ""
...

verwandte Informationen