Desde el principio: muy principiante en kubernetes aquí.
Creo que sé cómo puedo crear un volumen para mi StatefulSet para la persistencia. Para eso tengo
volumeMounts: - name: db mountPath: /var/lib/mydby
- metadata: name: db labels: app: myapp spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 50GiSupongo que esto le daría a mis pods cada (?) 50 GB de espacio para conservar sus cosas.
Esto me ayuda a probar mi aplicación cuando la base de datos está vacía y comenzar desde cero. Supongo que podría reutilizar la base de datos si los pods se apagaran y reiniciaran; así es como entiendo esta persistencia.
Sin embargo, me gustaría poder probar con una base de datos con historial también, con potencialmente varios GB de tamaño. Esto significa que cada pod montaría una base de datos existente y partiría de allí . Por lo tanto, cada pod necesita acceder al archivo pero también necesita montarlo de forma independiente y exclusiva . No puedo simplemente montar un volumen existente y compartirlo entre los pods.
La base de datos debe ser un almacén de clave-valor en disco como leveldb .
Esto permitiría probar la aplicación desde diferentes estados existentes de la base de datos.
es posible?
Antes de comenzar a jugar con StatefulSets, le aconsejo que lea doc - statefulset-official-doc . Eche un vistazo también a dynamics-provisioning . Similarmente como dijo @SYN:
1. Cree PVC: especifique la clase de almacenamiento y el tamaño allí, incluso antes de crear StatefulSet.
2. Cree un Job /Pod que montaría su volumen y lo configuraría automáticamente y extraería sus datos de la forma que desee. Móntelo en el directorio, que utiliza su base de datos para almacenar los datos. Cuando los volúmenes estén listos, apague su pod de inicio.
3. Cree su StatefulSet. En lugar de crear nuevos PVC, reutilice los que haya preparado.