Shiba is a minimalist Kubernetes network plugin, as a replacement for flannel, Calico, etc.
It provides the basic networking capabilities for Kubernetes, including:
- Pod address assignment (with the help of
host-local
CNI plugin) - Overlay network (via Linux built-in IP tunnels) with dual-stack support (!)
It doesn't have advanced features like:
- Network policies
- Floating IPs
- BGP routing (who likes it?)
In a stable cluster, the functionality completely relies on the bundled CNI plugins and native Linux modules; Shiba daemon only works when a node has joined or left the cluster, or the node itself has rebooted.
Thus, the architecture is very simple, lightweight and friendly to debugging.
At the current stage, Shiba has the following requirements and limitations:
- The cluster must be configured with IPv6 support.
- Each node must have a routable IPv6 address as its
InternalIP
for tunneling. - Some settings (like NAT) are hardcoded.
- Only Kubernetes 1.22.0+ & Linux kernels 4.19+ are tested and supported.
- Make sure it's a new cluster, or the previous network plugin has been completely purged.
- Assign an IPv6
InternalIP
to each node if not already, by adding a--node-ip
parameter tokubelet
. - If the cluster is NOT set up with
kubeadm
, fill in theSHIBA_CLUSTERPODCIDRS
env ininstallation.yaml
. - Run
kubectl apply -f installation.yaml
and enjoy.