open-nomad/scheduler
Michael Schurter 3e50f72fad
core: merge reserved_ports into host_networks (#13651)
Fixes #13505

This fixes #13505 by treating reserved_ports like we treat a lot of jobspec settings: merging settings from more global stanzas (client.reserved.reserved_ports) "down" into more specific stanzas (client.host_networks[].reserved_ports).

As discussed in #13505 there are other options, and since it's totally broken right now we have some flexibility:

Treat overlapping reserved_ports on addresses as invalid and refuse to start agents. However, I'm not sure there's a cohesive model we want to publish right now since so much 0.9-0.12 compat code still exists! We would have to explain to folks that if their -network-interface and host_network addresses overlapped, they could only specify reserved_ports in one place or the other?! It gets ugly.
Use the global client.reserved.reserved_ports value as the default and treat host_network[].reserverd_ports as overrides. My first suggestion in the issue, but @groggemans made me realize the addresses on the agent's interface (as configured by -network-interface) may overlap with host_networks, so you'd need to remove the global reserved_ports from addresses shared with a shared network?! This seemed really confusing and subtle for users to me.
So I think "merging down" creates the most expressive yet understandable approach. I've played around with it a bit, and it doesn't seem too surprising. The only frustrating part is how difficult it is to observe the available addresses and ports on a node! However that's a job for another PR.
2022-07-12 14:40:25 -07:00
..
benchmarks snapshot restore-from-archive streaming and filtering (#13658) 2022-07-11 10:48:00 -04:00
annotate.go
annotate_test.go
context.go
context_test.go core: merge reserved_ports into host_networks (#13651) 2022-07-12 14:40:25 -07:00
device.go
device_test.go
feasible.go core: merge reserved_ports into host_networks (#13651) 2022-07-12 14:40:25 -07:00
feasible_test.go
generic_sched.go system_scheduler: support disconnected clients (#12555) 2022-04-15 09:31:32 -04:00
generic_sched_test.go CSI: no early return when feasibility check fails on eligible nodes (#13274) 2022-06-07 13:31:10 -04:00
preemption.go
preemption_test.go
propertyset.go core: merge reserved_ports into host_networks (#13651) 2022-07-12 14:40:25 -07:00
rank.go core: merge reserved_ports into host_networks (#13651) 2022-07-12 14:40:25 -07:00
rank_test.go core: merge reserved_ports into host_networks (#13651) 2022-07-12 14:40:25 -07:00
reconcile.go reconciler: Handle canaries when client disconnects (#12539) 2022-04-21 10:05:58 -04:00
reconcile_test.go reconciler: Handle canaries when client disconnects (#12539) 2022-04-21 10:05:58 -04:00
reconcile_util.go core: reschedule evicted batch job when resources become available 2022-06-02 14:04:13 -05:00
reconcile_util_test.go core: reschedule evicted batch job when resources become available 2022-06-02 14:04:13 -05:00
scheduler.go
scheduler_oss.go
scheduler_sysbatch_test.go
scheduler_system.go system_scheduler: support disconnected clients (#12555) 2022-04-15 09:31:32 -04:00
scheduler_system_test.go system_scheduler: support disconnected clients (#12555) 2022-04-15 09:31:32 -04:00
select.go
select_test.go
spread.go
spread_test.go
stack.go
stack_oss.go
stack_test.go
testing.go
util.go scheduler: volume updates should always be destructive (#13008) 2022-05-13 11:34:04 -04:00
util_test.go scheduler: volume updates should always be destructive (#13008) 2022-05-13 11:34:04 -04:00