Just got the same problem here.
Rancher version is 1.6.13.
Historically we had three rancher hosts. Today I added a fourth one with a required label (datacenter=test).
It also have the label “io.rancher.system” as a required label (and by the way, during tests I also did not put that label on it but have seen all infrasructure containers gets scheduled on it without problems…).
Then, I had to reboot one of the 3 host (which not have any required labels), and surprisingly I found out that some services which were on this host have been scheduled on the new one, even if they don’t have the required label (datacenter=test) on them, and they are not system (or infrastructure wide) services.
On the other hand, they have one paticular scheduling policy : we ask that there is 3 instances running (scale), and we also ask that an instance is not located on a host which already have a similar service :
io.rancher.scheduler.affinity:container_label_ne: io.rancher.stack_service.name=blabla/blabla
Don’t know if that might cause the bypassing of the required label rule on the fourth host.
Another thing that might have helped this problem to happen, is that the scheduling service was running on the node I had to reboot, and it then get rescheduled on the fourth node to.
I don’t know if the rescheduling of other services happened during the time the scheduling service was down (is that possible ?).
Anyway, that’s sound very bad to me, but perhaps I am missing something very simple.
Or perhaps it’s a bug ?
I’ll try to do some more tests and will report on this.
@EugenMayer for the load-balancer being scheduled on the required label hosts even without the label, the solution is to add a scheduling rule on the load-balancer service to ask it to NOT be scheduled on a host with a specific label (and of course, to add that label on all hosts that you don’t want your services to go to)