Skip to content

Networking

Pod and service CIDRs

Set pod and service CIDRs during initialization:

curl -fsSL https://github.com/MuNeNiCK/setup-k8s/raw/main/setup-k8s.sh | sudo sh -s -- \
  init \
  --pod-network-cidr 192.168.0.0/16 \
  --service-cidr 10.96.0.0/12

IPv4/IPv6 dual-stack

Pass comma-separated CIDRs, one IPv4 and one IPv6:

curl -fsSL https://github.com/MuNeNiCK/setup-k8s/raw/main/setup-k8s.sh | sudo sh -s -- \
  init \
  --pod-network-cidr 10.244.0.0/16,fd00:10:244::/48 \
  --service-cidr 10.96.0.0/12,fd00:20::/108

IPv6 single-stack

curl -fsSL https://github.com/MuNeNiCK/setup-k8s/raw/main/setup-k8s.sh | sudo sh -s -- \
  init \
  --pod-network-cidr fd00:10:244::/48 \
  --service-cidr fd00:20::/108

HA with an IPv6 VIP

IPv6 addresses are supported for --ha-vip. The control-plane endpoint is automatically formatted with brackets.

curl -fsSL https://github.com/MuNeNiCK/setup-k8s/raw/main/setup-k8s.sh | sudo sh -s -- \
  init \
  --ha \
  --ha-vip fd00::100 \
  --pod-network-cidr fd00:10:244::/48

CNI plugin

Install a CNI plugin after kubeadm init completes:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

Make sure the CNI plugin supports your address family. Calico, Cilium, and Flannel support dual-stack, but plugin-specific configuration may still be required.

Single-node clusters

Remove the control-plane taint to run workloads on a single-node cluster:

kubectl taint nodes --all node-role.kubernetes.io/control-plane-

Verification

kubectl get nodes
kubectl get pods --all-namespaces