Kubernetes StatefulSets [1] are intended to address this kind of use case. They provide stable network identity and stable storage.
Kubernetes enables a container to declare the resources that it requires, including things like dedicated CPU and memory requirements. There are still some rough edges (example: how do you set the amount of kernel shared memory you need), but those issues are being ironed out.
[1] https://kubernetes.io/docs/tutorials/stateful-application/ba...