Subnet Addressing
The configuration of the Subnet define how Machines receive network settings (IP addresses, routes, DNS, NTP etc.).
There are two adressing modes:
| Addressing | Who hands out network addresses & settings | When to use |
|---|---|---|
| DHCP | A DHCP server provided by the customer | If there is already an existing DHCP server that should/must be used |
| IPAM | Foundry itself | If there's no DHCP server or if the network configuration should live in meltcloud |
DHCP
In a Subnet with addressing mode DHCP, a DHCP server (configured by the customer) must provide the following settings via DHCP.
Missing or additional settings can be specified in the Subnet's configuration in meltcloud.
| Setting | Used for | Example | DHCP option | Required | Can be specified in meltcloud |
|---|---|---|---|---|---|
| IP address | The Machine's address on the segment | 10.0.10.11/24 | the lease itself | yes | no |
| Gateway | The default route | 10.0.10.1 | 3 | yes | no |
| DNS | Name resolution | 10.0.10.53, 10.0.10.54 | 6 | yes | yes |
| NTP | Time synchronisation | 10.0.10.60, 10.0.10.61 | 42 | no | yes |
| Search Domains | Resolving unqualified names | lab.example.com, example.com | 15 and 119 | no | yes |
| MTU | Frame size | 9000 | 26 | no | yes |
| Routes | Reaching other segments | 10.0.20.0/24 via 10.0.10.1 | 121 | no | yes |
If both the DHCP server and the Subnet configuration specify a value, the Subnet's value takes precedence.
Example Kea configuration
{
"Dhcp4": {
"subnet4": [
{
"subnet": "10.10.10.0/24",
"pools": [
{ "pool": "10.10.10.100 - 10.10.10.200" }
],
"option-data": [
{ "name": "routers", "data": "10.10.10.1" }, // sets default gw / route
{ "name": "domain-name", "data": "lab.example.com" }, // dns search domain
{ "name": "domain-name-servers", "data": "10.10.10.53, 10.10.10.54" }, // dns servers
{ "name": "ntp-servers", "data": "10.10.10.60" }, // ntp source
]
}
]
}
}As Terraform: DHCP Subnets.
IPAM
In this case, Foundry owns all IP addresses and network settings, no DHCP server needed at all.
The settings are specified in the Subnet itself:
| Setting | Used for | Example | Required |
|---|---|---|---|
| IP Pool | An IP Pool provides IP addresses | 10.0.10.0/24 from IP Pool wl-prd | yes |
| Gateway | The default route | 10.0.10.1 | yes |
| DNS | Name resolution | 10.0.10.53, 10.0.10.54 | yes |
| NTP | Time synchronisation | 10.0.10.60, 10.0.10.61 | no |
| Search Domains | Resolving unqualified names | lab.example.com, example.com | no |
| MTU | Frame size | 9000 | no |
| Routes | Reaching other segments | 10.0.20.0/24 via 10.0.10.1 | no |
As Terraform: IPAM Subnets.
Pinned/Static IP addresses
By default, IP addresses that are distributed from IP Pools to Machines are randomly assigned and not guaranteed to be static over time.
In general, unstable Machine IPs are sufficient: Kubernetes workers do not require static IP addresses or DNS names. However, if there is some external system (or legacy guideline) that expects to reach Machines via static IPs (or DNS Names that point to static IPs), you can pin IP addresses to Machines.
Enrollment on IPAM Subnets
If a Machine enrolls on a Subnet with IPAM addressing mode, it tries to allocate an IP address from the IP Pool by using RFC 5227 (ARP probing).
There might be some network setups where this approach doesn't work - in that case, check Enrollment fails on an IPAM Subnet.
Next, see how Network Profiles attach a Machine to these Subnets.
