Un clúster de Kubernetes no debe contener servicios con estado, como bases de datos, debido a la escalabilidad, la recuperación y el funcionamiento del almacenamiento. ¿Sería el uso de ceph una alternativa a este problema?
Un Kubernetes puede contener servicios con estado. Algunos ejemplos son Redis cache o CockroachDB , pero deberían ser un servicio distribuido .
Ceph es una alternativa de solución de almacenamiento.
En Kubernetes hay objetos llamados StatefulSets, que son objetos de API de carga de trabajo que mantienen una identidad fija para cada uno de los pods en volúmenes persistentes, de modo que puede volver a adjuntar un volumen al pod que puede reiniciarse en un nodo diferente. Dicho desarrollo es realmente importante para mantener el estado dentro de un clúster, ya que una aplicación como una base de datos ahora puede sobrevivir a un Pod que se cierra. Los StatefulSets se utilizan principalmente con bases de datos y aplicaciones en clúster que tienen requisitos específicos. Puede validarlos y modificarlos fácilmente.
Por ejemplo, hablando de escalado: con la replicación de MySQL, puede escalar su capacidad de consulta de lectura agregando réplicas. Con StatefulSet, puede hacer esto con un solo comando:
$ kubectl scale statefulset mysql --replicas=5Eche un vistazo: statefulset-database , aquí puede encontrar cómo configurar la base de datos MySQL usando StatefulSet - mysql-statefulset .
Las aplicaciones con estado son servicios que requieren almacenamiento de respaldo y mantener el estado es fundamental para ejecutar el servicio. Las bases de datos como MySQL, MongoDB, Postgres y Cassandra son buenos ejemplos. Necesitan alguna forma de almacenamiento persistente que sobreviva a los reinicios del servicio.
Hablando de Ceph . Es tradicionalmente conocido por el almacenamiento de objetos y bloques, pero no por el almacenamiento de bases de datos. - leer el artículo: ceph-databases .
Eche un vistazo también a la documentación oficial: statefulsets .