AndreBorrmann / gep_wip

Gardener Enhancement Proposal WIP
1 stars 1 forks source link

Are overlapping Subnets for Nodes and Pods possible? #3

Open mganter opened 2 years ago

mganter commented 2 years ago

We have to check if overlapping node and pod cidrs can be used.

Example setup 1:

Tests: (With Cilium and Calico)

mganter commented 2 years ago

We tested it using Kubeadm on OpenStack VMs:

- Network with 2 subnets
  - 10.0.0.0/8
  - 2001:db8::/110 (without DHCP)

- Nodes
  - 2001:db8::2:1 (master)
  - 2001:db8::3:1 (worker)

- node size cidr ipv6 /112
- Pod cidr 2001:db8::2:0/111
  - 2001:db8::2:0/112 (master)
  - 2001:db8::3:0/112 (worker

We used calico as CNI. As Calico doens't respect the podCidrs field on nodes, we had to manage manually, that the pod cidrs were delegated to the correct nodes. So for calico we had the following setup:

2001:db8::2:1 had 2001:db8::2:1f40/122
2001:db8::3:1 had 2001:db8::3:1f40/122

For calico, remember that you need to have Calico dual stack config in place.

A next test setup forcing the IPAMBlocks to equal 2001:db8::2:0/112 and 2001:db8::3:0/112. This resulted in routing errors!

Not going to work:

Unsolved topics:

mganter commented 2 years ago

New Insights:

The node.spec.podCidr / node.spec.podCidrs assignment from kube-controller-manager can be disable. So that kube-controller-manager does not need the information about the cluster-cidr. Keep in mind, that the network plugin needs to manage the pod cidrs then. (Calico does this anyway, but won't be able to autodetect the IPPool)

Kube-Proxy uses cluster-cidr for service traffic routing, which can be disabled optionally.