cilium install --version 1.18.5 \ --set ipv4.enabled=true \ --set ipv6.enabled=true \ --set kubeProxyReplacement=true \ --set k8sServiceHost=$PRIMARY_IPV4 \ --set k8sServicePort=6443 \ --set ipam.operator.clusterPoolIPv4PodCIDRList='{10.244.0.0/16}' \ --set ipam.operator.clusterPoolIPv4MaskSize=24 \ --set ipam.operator.clusterPoolIPv6PodCIDRList='{fd24:4::/48}' \ --set ipam.operator.clusterPoolIPv6NodeCIDRMaskSize=64 \ --set routingMode=native \ --set autoDirectNodeRoutes=true \ --set ipv4NativeRoutingCIDR="10.244.0.0/16" \ --set ipv6NativeRoutingCIDR="fd24:4::/48" \ --dry-run > cilium-dualstack.yaml # When file is generated "ipam.operator.clusterPoolIPv6NodeCIDRMaskSize" becomes 120. # Edit cilium-dualstack.yaml and search "cluster-pool-ipv6-mask-size" to update its value to 64 we passed. kubectl apply -f cilium-dualstack.yaml # Wait for all pods to be running and below status: Cilium: OK, Operator: OK & Envoy DaemonSet: OK cilium status --wait # Now join worker nodes # After adding worker nodes it took around 13 mins for cluster to be running