Which problems does a container orchestration solve?
If you are only running a single container or two containers together you are correct in that an orchestrator may be unnecessary and add unneeded complexity.  However, these tools do solve several issues when you running several containers together (especially in production).


  What are the common problems with containers that must be solved by these orchestration solutions


Containers run in an isolated process (usually in it's own namespace).  This means that by default the container will not be aware of other containers.  Additionally, it will not be aware of the systems files, network interfaces, and processes.  While this can greatly help with portability of the software it does not solve several production issues such as microservices, container discovery, scalability, disaster recovery, or upgrades.


  What is the benefit of adding such a complex system in your production?


Adding a container orchestrator can greatly reduce the complexity in production as these tools are designed to resolve the issues outlined above.  For example, Kubernetes is built to allow containers to be linked together, deploy containers across an entire network, scale and load balance the network based on container resource consumption, and allow upgrades of individual containers with no downtime.