Automatic moving containers based on performance

I’m looking for an orchestration where my containers are automatically moved to another host when the CPU (or memory also) gets too high and another host is able (almost) idle. Also, when adding an extra host, containers should be moved to this one too.
In my opinion an orchestration should handle this, but I’m not sure if it does already. Can’t find anything about this.

I’ve had a setup of Cattle, which I really liked, but my container stress-test didn’t moved container to other hosts. Also after adding a new host, no containers where moved automatically.
Tried to setup an k8s environment too (4 hosts), everything was setup correctly, but nodes where not listed in the kubectl command. So couldn’t try this one.
Also tried a swarm environment (4 hosts), but the process gets stuck on the latest step “starting services”.

Am I wrong in thinking an orchestration should handle this?

You can get the desired “distribution” of containers across your hosts by using scheduling rules - http://docs.rancher.com/rancher/v1.2/en/cattle/scheduling/

and have re-distribution based on healthchecks - http://docs.rancher.com/rancher/v1.2/en/cattle/health-checks/

As for moving containers based on system metrics, I had a similar need awhile ago, and the answer was “no”, because it’s not something that Docker really supports.

I guess I would be more interested in what is happening that is causing exhaustion of resources on the host?, and look at what changes need to be made to accommodate the amount of utilization. There are also settings for how much cpu/mem are allocated to containers.