Dual-Stack Kubernetes on bare-metal with LazyJack
Preliminary support has been added to Lazyjack as of 1.3.5! Now, as of Kubernetes 1.13, the KEP for dual-stack is still under review, and only a few changes have been made to the code, but you can bring up a cluster in dual-stack mode. You will only see one family of IPs for pods displayed via “kubectl get pod”, but if you look on the pods, you will see both IPv4 and IPv6 addresses.
I’ve already updated kubeadm-dind-cluster to support dual-stack for clusters brought up on a single node, using docker-in-docker, but now Lazyjack supports this too, on bare-metal nodes.
The config.yaml file for Lazyjack will have these changes:
- A second CIDR can be specified for the management and pod networks, by using the “cidr2” field, under the respective sections. You can specify one family under “cidr” and one under “cidr2”.
- The service network CIDR will specify which family is used for the service network. The KEP only supports a single IP family for service networks at this time.
- Omit the DNS64 and NAT64 sections, which are not used in dual-stack mode.
- The ‘dns64’ and ‘nat64’ operational modes are note specified under the opmodes field any nodes.
Here is an example config that is using IPv6 for the service network:
general: mode: dual-stack plugin: ptp insecure: true kubernetes-version: "v1.13.0-alpha.3" work-area: "/home/c2/bare-metal/work-area" topology: minion1: interface: "enp10s0" opmodes: "minion" id: 2 minion2: interface: "enp9s0" opmodes: "minion" id: 3 my-master: interface: "enp10s0" opmodes: "master" id: 4 mgmt_net: cidr: "10.192.0.0/16" cidr2: "fd00:20::/64" pod_net: cidr: "10.244.0.0/16" cidr2: "fd00:40::/72" service_net: cidr: "fd00:30::/110"