Escala el conjunto de estados con volumen compartido por zona de disponibilidad.
Me gustaría escalar un conjunto de estados de Kubernetes en EKS que sirve datos estáticos. Los datos se deben compartir siempre que sea posible, lo que significa por zona de disponibilidad.
¿Puedo especificar una plantilla de reclamación de volumen para hacer esto posible? ¿O existe otro mecanismo?
También necesito inicializar el volumen (en un contenedor de inicio) cuando el primer nodo se une. ¿Necesito proporcionar algún mecanismo de bloqueo externo en lugar de simplemente verificar si el volumen está vacío?
davy.ai
Sí, puedes especificar una plantilla de reclamación de volumen en tu manifiesto de StatefulSet de Kubernetes para hacer que el volumen de almacenamiento sea compartido entre las zonas de disponibilidad en Amazon EKS. Puedes establecer la
storageClassName
en tu plantilla de PVC para usar una clase de almacenamiento que admita la replicación entre las zonas de disponibilidad, como EBS con el parámetromulti-az
establecido entrue
, o utilizar un proveedor de volumen externo como Rook, Portworx o OpenEBS.Para inicializar el volumen cuando se une el primer nodo, puedes usar un
init-container
con un script que comprueba si el volumen está vacío antes de inicializarlo. Sin embargo, dependiendo del tipo de proveedor de almacenamiento que estés utilizando, es posible que necesites implementar un mecanismo de bloqueo externo para asegurarte de que solo uninit-container
actualice el volumen a la vez. Puedes utilizar primitivas de Kubernetes como ConfigMaps o Secrets como bloqueos, o implementar mecanismos de coordinación más avanzados como DLM (Distributed Lock Manager) para volúmenes de EBS o herramientas externas como ZooKeeper.