ノード上でポッドをスケジュールし、別のノード上の PV にアクセスする

ノード上でポッドをスケジュールし、別のノード上の PV にアクセスする

私は、異種構成 (1 つのノードには大容量だが低速の HDD があり、別のノードには SSD ドライブがあり、3 つ目のノードには SD カードのみがある) で RPi4 上で k3s クラスターを実行しています。

ニーズに応じてノードとポッドに接続された「local-path」という種類の永続ボリュームとクレームがあります。

私は、SSD ディスクを搭載したノードに保存されているデータを処理するために、ディスクのないノードでポッドをスケジュールする必要がある状況に直面しています (ffmpeg を使用して一部のビデオ ファイルを mp4 に再エンコードしますが、これはコストのかかるプロセスであるため、アイドル ノードでこれを実行し、SSD を実行しているノードの速度を低下させないようにしたいと考えています)。

別のノードから PV を透過的にマウントすることは可能ですか? NFS を使用する必要がありますか? ベアメタル RPi4 で使用して、必要な操作を実行できる、より進化したタイプのボリュームはありますか?

ドキュメントを見てもあまり役に立ちませんでした (永続ボリュームの種類は数多くありますが、ユースケースはあまり説明されていません)。

ありがとう

答え1

興味があるかもしれないプロジェクト・ロングホーンこれは、
あらゆる Kubernetes クラスターの永続ストレージ実装であり、Kubernetes ノードの既存のディスクを使用して、Kubernetes ポッドに複製された安定したストレージを提供します。

記載の通りロングホーン github:

Longhorn は軽量で信頼性が高く、強力です。 kubectl apply コマンドを 1 回実行するか、Helm チャートを使用して、既存の Kubernetes クラスターに Longhorn をインストールできます。 Longhorn がインストールされると、Kubernetes クラスターに永続ボリュームのサポートが追加されます。

そして何よりも、直感的なGUIダッシュボードを使用してカスタマイズできますロングホーンあなたのニーズに合わせて。

注記:現時点でLonghornがサポートしているのは64ビット

インストール

以下の例では、インストール方法を説明します。ロングホーン

まず、open-iscsi各クラスター ノードにインストールする必要があります。たとえば、次のようにインストールする必要があります。

apt-get install open-iscsi

次にインストールlonghorn.yamlするにはロングホーン:

kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml

次に、longhorn StorageClass( を使って後でカスタマイズできますConfigMap)を作成します。

kubectl apply -f https://raw.githubusercontent.com/rancher/longhorn/master/deploy/longhorn.yaml

使い始めるのに必要なのはこれだけですロングホーン:)

ロングホーンUI

前にも述べたように、便利なGUIダッシュボードを使うことができます。ここアクセス方法も確認できます。また
、ダッシュボードを外部に公開する必要がある場合は、Ingressここ

ダッシュボードの使用はLonghorn UI非常に直感的です。たとえば、「ノード」タブでは、ストレージを提供する専用のノードを簡単に指定できます。

longhorn ストレージクラス

名前空間でlonghorn StorageClass編集することでカスタマイズできます。たとえば、パラメータを (default) から次のように編集しました:longhorn-storageclass ConfigMaplonghorn-systemnumberOfReplicas31

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: ""
...

関連情報