kubernetes/kops · error
expecting subnet CIDR to not be <nil>
Error message
expecting subnet CIDR to not be <nil>
What it means
calculateSubnetCIDR was asked to compute a CIDR but the subnet's CIDR hint pointer is nil — the spec is incomplete: a subnet expects a computed CIDR without providing the '/size,netnum' hint.
Source
Thrown at upup/pkg/fi/cloudup/awstasks/subnet.go:557
func (d *deleteSubnetIPv6CIDRBlock) TaskName() string {
return "SubnetIPv6CIDRBlock"
}
func (d *deleteSubnetIPv6CIDRBlock) Item() string {
return fmt.Sprintf("%v: ipv6cidr=%v", *d.vpcID, *d.ipv6CidrBlock)
}
func (d *deleteSubnetIPv6CIDRBlock) DeferDeletion() bool {
return false // TODO: should we defer this?
}
func calculateSubnetCIDR(vpcCIDR, subnetCIDR *string) (*string, error) {
if vpcCIDR == nil {
return nil, fmt.Errorf("expecting VPC CIDR to not be <nil>")
}
if subnetCIDR == nil {
return nil, fmt.Errorf("expecting subnet CIDR to not be <nil>")
}
if !strings.HasPrefix(aws.ToString(subnetCIDR), "/") {
return nil, fmt.Errorf("expecting subnet cidr to start with %q: %q", "/", aws.ToString(subnetCIDR))
}
newSize, netNum, err := utils.ParseCIDRNotation(aws.ToString(subnetCIDR))
if err != nil {
return nil, fmt.Errorf("error parsing CIDR subnet: %v", err)
}
newCIDR, err := utils.CIDRSubnet(aws.ToString(vpcCIDR), newSize, netNum)
if err != nil {
return nil, fmt.Errorf("error calculating CIDR subnet: %v", err)
}
return aws.String(newCIDR), nil
}
View on GitHub (pinned to 4c8573c808)
Solutions
- Set the subnet's CIDR hint (e.g. '/24,3') or an explicit CIDR in the cluster spec
- Re-run `kops update cluster` after fixing the subnet spec
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at upup/pkg/fi/cloudup/awstasks/subnet.go:557 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05).
Data as JSON: /api/errors/9f0e564bee10807c.
Report an issue: GitHub.