Programe pod en un nodo y acceda a pv en otro nodo

Programe pod en un nodo y acceda a pv en otro nodo

Estoy ejecutando un clúster k3s en RPi4, con una configuración heterogénea (un nodo tiene una alta capacidad pero un disco duro lento, otro tiene una unidad SSD, un tercero solo tiene una tarjeta SD).

Tengo volúmenes persistentes y reclamos del tipo "ruta local", adjuntos a nodos y pods según mis necesidades.

Me enfrento a una situación en la que necesito programar un pod en el nodo sin disco para procesar los datos almacenados en el nodo con el disco ssd (volver a codificar algunos archivos de video a mp4 usando ffmpeg, y como este es un proceso costoso, Me gustaría hacer esto en un nodo inactivo y no ralentizar el nodo que ejecuta el ssd).

¿Es posible montar de forma transparente un PV desde un nodo diferente? ¿Necesito usar algunos nfs? ¿Existe un tipo de volumen más evolucionado que pueda usarse en RPi4 básico para hacer lo que quiero?

Mirar los documentos no ayudó mucho (hay toneladas de tipos de volúmenes persistentes diferentes, y no se describen muchos casos de uso).

Gracias

Respuesta1

Creo que te puede interesarProyecto Longshorn.
Es una implementación de almacenamiento persistente para cualquier clúster de Kubernetes y utiliza los discos existentes de sus nodos de Kubernetes para proporcionar almacenamiento replicado y estable para sus pods de Kubernetes.

Como se describe engithub de cuerno largo:

Longhorn es liviano, confiable y potente. Puede instalar Longhorn en un clúster de Kubernetes existente con un comando de aplicación de kubectl o utilizando gráficos de Helm. Una vez instalado Longhorn, agrega soporte de volumen persistente al clúster de Kubernetes.

Y lo mejor de todo es que puede utilizar el panel GUI intuitivo para personalizarcuernos largosa tus necesidades.

Nota:En este momento Longhorn solo admiteamd64.

Instalación

En el siguiente ejemplo, le mostraré cómo instalarcuerno largo.

En primer lugar, debe tener open-iscsiinstalados los nodos en cada clúster. Necesitas instalarlo usando por ejemplo:

apt-get install open-iscsi

A continuación aplique el longhorn.yamlpara instalarcuernos largos:

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

Luego crea un longhorn StorageClass(puedes personalizarlo más tarde usando ConfigMap)

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

Eso es todo lo que necesitamos para empezar a usar.cuernos largos:)

Interfaz de usuario de cuernos largos

Como describí antes, podemos usar un útil panel GUI,aquípuedes encontrar cómo acceder a él.
Además, es posible que necesite exponer el tablero al mundo exterior usando Ingresscomo se describeaquí

El uso Longhorn UIdel panel es bastante intuitivo; por ejemplo, en la pestaña "Nodos", puede especificar fácilmente nodos dedicados a proporcionar almacenamiento.

Clase de almacenamiento de cuernos largos

Puede personalizar longhorn StorageClasseditando longhorn-storageclass ConfigMapen longhorn-systemel espacio de nombres. Por ejemplo, edité numberOfReplicasel parámetro de 3(predeterminado) a 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: ""
...

información relacionada