
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-iscsi
instalados los nodos en cada clúster. Necesitas instalarlo usando por ejemplo:
apt-get install open-iscsi
A continuación aplique el longhorn.yaml
para 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 Ingress
como se describeaquí
El uso Longhorn UI
del 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
StorageClass
editando longhorn-storageclass
ConfigMap
en longhorn-system
el espacio de nombres. Por ejemplo, edité numberOfReplicas
el 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: ""
...