From 239bc7dbb59bd6d87a11ea867738bb4707105363 Mon Sep 17 00:00:00 2001 From: Kay Yan Date: Thu, 26 Oct 2023 09:53:04 +0000 Subject: [PATCH] add ipv6 unsupport for nerdctl Signed-off-by: Kay Yan --- pkg/cluster/internal/providers/docker/network.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkg/cluster/internal/providers/docker/network.go b/pkg/cluster/internal/providers/docker/network.go index f432846108..6f64b294e6 100644 --- a/pkg/cluster/internal/providers/docker/network.go +++ b/pkg/cluster/internal/providers/docker/network.go @@ -77,7 +77,7 @@ func ensureNetwork(name string) error { // https://github.com/kubernetes-sigs/kind/issues/1544 // Otherwise if it's not a pool overlap error, fail // If it is, make more attempts below - if isIPv6UnavailableError(err) { + if isIPv6UnavailableError(err) || isIPv6UnsupportError(err) { // only one attempt, IPAM is automatic in ipv4 only return createNetworkNoDuplicates(name, "", mtu) } @@ -264,6 +264,12 @@ func isIPv6UnavailableError(err error) bool { return rerr != nil && strings.HasPrefix(string(rerr.Output), "Error response from daemon: Cannot read IPv6 setup for bridge") } +// The nerdctl do not support the ipv6 network, https://github.com/containerd/nerdctl/issues/1547 +func isIPv6UnsupportError(err error) bool { + rerr := exec.RunErrorForError(err) + return rerr != nil && strings.Contains(string(rerr.Output), "unknown flag: --ipv6") +} + func isPoolOverlapError(err error) bool { rerr := exec.RunErrorForError(err) return rerr != nil && strings.HasPrefix(string(rerr.Output), "Error response from daemon: Pool overlaps with other one on this address space") || strings.Contains(string(rerr.Output), "networks have overlapping")