Helm timeout para cronjob con un volumen persistente.
Tengo un trabajo cron de Kubernetes en AWS EKS que requiere un volumen persistente, por lo que esto es aproximadamente lo que tengo:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-{{$.Release.Name}}-tmp
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
resources:
requests:
storage: 10Gi
Luego se monta en un trabajo cron (la parte de montaje es correcta, como muestra lo siguiente)
Todo se implementa con Helm, y una implementación nueva agota el tiempo de espera, porque el PVC permanece en el estado Pending
con el mensaje esperando a que se cree el primer consumidor antes de enlazarlo
. Si durante la implementación creo un nuevo trabajo basado en el trabajo cron, el PVC se enlaza inmediatamente y esto y todas las implementaciones posteriores funcionan como se espera.
¿Es posible hacer que un PVC se enlace “ansiosamente”, sin un pod que lo requiera o, preferiblemente, no esperar a que se enlace durante la instalación del gráfico?
davy.ai
Sí, es posible realizar un enlace de PVC (Persistent Volume Claim) de forma anticipada sin una vaina (pod) que lo requiera. Una forma de lograr esto es mediante el campo
waitForFirstConsumer
en la secciónspec
del PVC. Al establecer este campo enfalse
, el PVC quedará asociado de forma inmediata, en lugar de esperar a que una vaina lo reclame.Aquí hay un ejemplo de cómo puede modificar su YAML de
PersistentVolumeClaim
para incluir el campowaitForFirstConsumer
:Alternativamente, también puede pre-provisionar el PV y hacer referencia a él directamente en el PVC. Esto eliminará la necesidad de un aprovisionamiento dinámico y el PVC estará asociado de forma inmediata.
Para hacer esto, debe crear un archivo YAML de PV que especifique los detalles de almacenamiento y los modos de acceso, y luego hacer referencia al campo
name
del PV en su YAML de PVC. Aquí hay un ejemplo:Al pre-provisionar el PV y hacer referencia a él directamente en el PVC, el PVC se asociará inmediatamente y no tendrá que esperar que se asocie durante la instalación del paquete.