{"record":{"id":"ef4417df6a183ca9","repo":"k3s-io/k3s","slug":"cluster-cidr-v-and-node-ip-v-must-share-the-s","errorCode":null,"errorMessage":"cluster-cidr: %v and node-ip: %v, must share the same IP version (IPv4, IPv6 or dual-stack)","messagePattern":"cluster-cidr: (.+?) and node-ip: (.+?), must share the same IP version \\(IPv4, IPv6 or dual-stack\\)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/agent/run.go","lineNumber":87,"sourceCode":"\tdualNode, err := utilsnet.IsDualStackIPs(nodeConfig.AgentConfig.NodeIPs)\n\tif err != nil {\n\t\treturn errors.WithMessage(err, \"failed to validate node-ip\")\n\t}\n\tserviceIPv4 := utilsnet.IsIPv4CIDR(nodeConfig.AgentConfig.ServiceCIDR)\n\tclusterIPv4 := utilsnet.IsIPv4CIDR(nodeConfig.AgentConfig.ClusterCIDR)\n\tnodeIPv4 := utilsnet.IsIPv4String(nodeConfig.AgentConfig.NodeIP)\n\tserviceIPv6 := utilsnet.IsIPv6CIDR(nodeConfig.AgentConfig.ServiceCIDR)\n\tclusterIPv6 := utilsnet.IsIPv6CIDR(nodeConfig.AgentConfig.ClusterCIDR)\n\tnodeIPv6 := utilsnet.IsIPv6String(nodeConfig.AgentConfig.NodeIP)\n\n\t// check that cluster-cidr and service-cidr have the same IP versions\n\tif (serviceIPv6 != clusterIPv6) || (dualCluster != dualService) || (serviceIPv4 != clusterIPv4) {\n\t\treturn fmt.Errorf(\"cluster-cidr: %v and service-cidr: %v, must share the same IP version (IPv4, IPv6 or dual-stack)\", nodeConfig.AgentConfig.ClusterCIDRs, nodeConfig.AgentConfig.ServiceCIDRs)\n\t}\n\n\t// check that node-ip has the IP versions set in cluster-cidr\n\tif (clusterIPv6 && !(nodeIPv6 || dualNode)) || (dualCluster && !dualNode) || (clusterIPv4 && !(nodeIPv4 || dualNode)) {\n\t\treturn fmt.Errorf(\"cluster-cidr: %v and node-ip: %v, must share the same IP version (IPv4, IPv6 or dual-stack)\", nodeConfig.AgentConfig.ClusterCIDRs, nodeConfig.AgentConfig.NodeIPs)\n\t}\n\n\tenableIPv6 := dualCluster || clusterIPv6\n\tenableIPv4 := dualCluster || clusterIPv4\n\n\t// dualStack or IPv6 are not supported on Windows node\n\tif (goruntime.GOOS == \"windows\") && enableIPv6 {\n\t\treturn errors.New(\"dual-stack or IPv6 are not supported on Windows node\")\n\t}\n\n\tconntrackConfig, err := getConntrackConfig(nodeConfig)\n\tif err != nil {\n\t\treturn errors.WithMessage(err, \"failed to validate kube-proxy conntrack configuration\")\n\t}\n\t// The net/bridge/bridge-nf-call-{ip,ip6}tables sysctls are only required by kube-proxy\n\t// and flannel. When both are disabled the node is using an alternative CNI, so leave\n\t// these sysctls untouched for the administrator to manage. See\n\t// https://github.com/k3s-io/k3s/issues/14022. The flannel backend is compared against the","sourceCodeStart":69,"sourceCodeEnd":105,"githubUrl":"https://github.com/k3s-io/k3s/blob/6ba341e396edc16b8dcae978a7c5e3ac7ee5606e/pkg/agent/run.go#L69-L105","documentation":"Error \"cluster-cidr: %v and node-ip: %v, must share the same IP version (IPv4, IPv6 or dual-stack)\" thrown in k3s-io/k3s.","triggerScenarios":"Thrown at pkg/agent/run.go:87 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"6ba341e396edc16b8dcae978a7c5e3ac7ee5606e","analyzedAt":"2026-08-15T16:27:54.286Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}