Skip to content

Commit 3526bd8

Browse files
committed
enable ipv6 on nodes
1 parent d5fb383 commit 3526bd8

File tree

2 files changed

+24
-12
lines changed

2 files changed

+24
-12
lines changed

pkg/cluster/internal/create/nodes.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,16 @@ func createNodeContainers(
103103
desiredNode := desiredNode // capture loop variable
104104
fns = append(fns, func() error {
105105
// create the node into a container (~= docker run -d)
106-
_, err := desiredNode.Create(clusterLabel)
106+
node, err := desiredNode.Create(clusterLabel)
107+
if err != nil {
108+
return err
109+
}
110+
if desiredNode.IPv6 {
111+
err = node.EnableIPv6()
112+
}
107113
return err
108114
})
115+
109116
}
110117
if err := concurrent.UntilError(fns); err != nil {
111118
return err
@@ -125,6 +132,7 @@ type nodeSpec struct {
125132
// TODO(bentheelder): replace with a cri.PortMapping when we have that
126133
APIServerPort int32
127134
APIServerAddress string
135+
IPv6 bool
128136
}
129137

130138
func nodesToCreate(cfg *config.Cluster, clusterName string) []nodeSpec {
@@ -154,6 +162,7 @@ func nodesToCreate(cfg *config.Cluster, clusterName string) []nodeSpec {
154162
}
155163
}
156164
isHA := controlPlanes > 1
165+
ipv6 := "ipv6" == cfg.Networking.IPFamily
157166

158167
// add all of the config nodes as desired nodes
159168
for _, configNode := range configNodes {
@@ -173,6 +182,7 @@ func nodesToCreate(cfg *config.Cluster, clusterName string) []nodeSpec {
173182
ExtraMounts: configNode.ExtraMounts,
174183
APIServerAddress: apiServerAddress,
175184
APIServerPort: apiServerPort,
185+
IPv6: ipv6,
176186
})
177187
}
178188

@@ -186,6 +196,7 @@ func nodesToCreate(cfg *config.Cluster, clusterName string) []nodeSpec {
186196
ExtraMounts: []cri.Mount{},
187197
APIServerAddress: cfg.Networking.APIServerAddress,
188198
APIServerPort: cfg.Networking.APIServerPort,
199+
IPv6: ipv6,
189200
})
190201
}
191202

pkg/cluster/nodes/node.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -284,28 +284,29 @@ func getProxyDetails() proxyDetails {
284284

285285
// EnableIPv6 enables IPv6 inside the node container and in the inner docker daemon
286286
func (n *Node) EnableIPv6() error {
287-
// configure Docker daemon to use ipv6
288-
// we take an unused range otherwise the daemon refuse to start
289-
// TODO(aojea): Be smarter modifying the daemon.json file
290-
err := n.WriteFile("/etc/docker/daemon.json",
291-
"{\n\t\"ipv6\": true,\n\t\"fixed-cidr-v6\": \"fc00:db8:1::/64\"\n}")
292-
if err != nil {
293-
return errors.Wrap(err, "failed to create docker daemon.json")
294-
}
295-
296287
// enable ipv6
297288
cmd := n.Command("sysctl", "net.ipv6.conf.all.disable_ipv6=0")
298-
err = exec.RunLoggingOutputOnFail(cmd)
289+
err := exec.RunLoggingOutputOnFail(cmd)
299290
if err != nil {
300291
return errors.Wrap(err, "failed to enable ipv6")
301292
}
302-
303293
// enable ipv6 forwarding
304294
cmd = n.Command("sysctl", "net.ipv6.conf.all.forwarding=1")
305295
err = exec.RunLoggingOutputOnFail(cmd)
306296
if err != nil {
307297
return errors.Wrap(err, "failed to enable ipv6 forwarding")
308298
}
299+
// enable ipv6 kubelet
300+
_, nodeIPv6, err := n.IP()
301+
if err != nil {
302+
return errors.Wrap(err, "failed to get IP for node")
303+
}
304+
305+
kubeletExtraConfig := fmt.Sprintf("KUBELET_EXTRA_ARGS=\"--fail-swap-on=false --node-ip=%s\"", nodeIPv6)
306+
if err := n.WriteFile("/etc/default/kubelet", kubeletExtraConfig); err != nil {
307+
// TODO(bentheelder): logging here
308+
return errors.Wrap(err, "failed to copy kubelet extra config to node")
309+
}
309310

310311
return nil
311312
}

0 commit comments

Comments
 (0)