Subnet Available
Collect and analyze information about checking for an available (IPv4) subnet.
Subnet Available Collector
To check if there is an available (IPv4) subnet on a node, you can use the subnetAvailable
collector. This is useful for Pod/Service CIDR ranges.
This collector searches for overlap with the routing table of the node to help avoid conflicts.
Parameters
In addition to the shared collector properties, the subnetAvailable
collector accepts the following parameters:
CIDRRangeAlloc
(Required)
The overarching subnet range to search for available CIDR blocks to use. The format must be "x.x.x.x/y"
, with an IPv4 network and y
being a CIDR mask between 1 and 32.
desiredCIDR
(Required)
An integer between 1 and 32.
Searches in CIDRRangeAlloc
for an IP subnet of this CIDR block size.
Example Collector Definition
apiVersion: troubleshoot.sh/v1beta2
kind: HostPreflight
metadata:
name: subnet-available
spec:
collectors:
# would output yes/no depending if there is a /22 available in 10.0.0.0/8
- subnetAvailable:
CIDRRangeAlloc: "10.0.0.0/8"
desiredCIDR: 22
Included Resources
The results of the subnetAvailable
collector are stored in the host-collectors/subnetAvailable
directory of the support bundle.
[collector-name].json
If the collectorName
field is not set, the file is named result.json
.
Example of the resulting JSON file:
{
"CIDRRangeAlloc": "10.0.0.0/8",
"desiredCIDR": 22,
"status": "a-subnet-is-available"
}
Subnet Available Analyzer
The subnetAvailable
analyzer supports the following outcomes:
a-subnet-is-available
: Indicates that a subnet of thedesiredCIDR
size is available withinCIDRRangeAlloc
.no-subnet-available
: Indicates that the entirety ofCIDRRangeAlloc
is exhausted by the node routing table, and that no subnets can be allocated of thedesiredCIDR
size.
Example Analyzer Definition
apiVersion: troubleshoot.sh/v1beta2
kind: HostPreflight
metadata:
name: subnet-available
spec:
analyzers:
- subnetAvailable:
outcomes:
- fail:
when: "no-subnet-available"
message: failed to find available subnet
- pass:
when: "a-subnet-is-available"
message: available /22 subnet found