Question

I'm trying to understand containerized apps and databases and I'm trying to understand the microservice architecture using kubernetes. One thing that I couldn't get my mind convinced is the database part.

For example I have a Venues database and a Venues REST API application in a container, which also has the database inside the same container.

enter image description here

When the first instance crashes for some reason, kubernetes launches a second instance. Or, there may be more than one of the same service running in different instances. Or they might be connecting another DB service all together.

The thing that I couldn't understand, when the service which contains the DB crashes, the newly created container will have an empty database right? How is this handled? If replication is the case, what about memory and disk usages?

Please someone clarify this with different approaches. Or is there something previously asked here, or somewhere else, please direct me to the right direction.

Thanks in advance.

Was it helpful?

Solution

While a database server may run in a container, its storage needs to be an external resource. For example, when running Docker manually, you would mount a volume from the host into the Docker container for the server process to use.

That external storage survives the server process, whether that process is containerized or not. Restarting the process (but with the same storage) will allow the database to recover, if configured appropriately.

In a data center setting, the storage is not part of the same machine that the software runs on. Instead, you might have a dedicated disk array that is connected over a storage area network (SAN). In a cloud setting, you would typically rent a block device or virtual drive to store the persistent database data on.

Licensed under: CC-BY-SA with attribution
scroll top