Currently, the Spiderpool is under beta stage, not ready for production environment yet.
The Spiderpool is an IP Address Management (IPAM) CNI plugin that assigns IP addresses for kubernetes clusters.
Currently, it is under developing stage, not ready for production environment yet.
Any Container Network Interface (CNI) plugin supporting third-party IPAM plugins can use the Spiderpool, such as MacVLAN CNI, VLAN CNI, IPVLAN CNI etc. The Spiderpool also supports Multus CNI case to assign IP for multiple interfaces. More CNIs will be tested for integration with Spiderpool.
Most overlay CNIs, like Cilium and Calico, have a good implementation of IPAM, so the Spiderpool is not intentionally designed for these cases, but maybe integrated with them.
The Spiderpool is intentionally designed to use with underlay network, where administrators can accurately manage each IP.
Currently, in the community, the IPAM plugins such as whereabout, kube-ipam, static, dhcp, and host-local, few of them could help solve complex underlay-network issues, so we decide to develop the Spiderpool.
BTW, there are also some CNI plugins that could work on the underlay mode, such as kube-ovn and coil. But the Spiderpool provides lots of different features, you could see Features for details.
The Spiderpool provides a large number of different features as follows.
-
Based on CRD storage, all operation could be done with kubernetes API-server.
-
Support for assigning IP addresses with three options: IPv4-only, IPv6-only, and dual-stack.
-
Support for working on the clusters with three options: IPv4-only, IPv6-only, and dual-stack.
-
Support for creating multiple ippools. Different namespaces and applications could monopolize or share an ippool.
-
An application could specify multiple backup ippool resources, in case that IP addresses in an ippool are out of use. Therefore, you neither need to scale up the IP resources in a fixed ippool, nor need to modify the application yaml to change a ippool.
-
Support to bind range of IP address only to an applications. No need to hard code an IP list in deployment yaml, which is not easy to modify. With Spiderpool, you only need to set the selector field of ippool and scale up or down the IP resource of an ippool dynamically.
-
Support Statefulset pod who will be always assigned same IP addresses.
-
Different pods in a single controller could get IP addresses from different subnets for an application deployed in different subnets or zones.
-
Administrator could safely edit ippool resources, the Spiderpool will help validate the modification and prevent from data race.
-
Collect resources in real time, especially for solving IP leakage or slow collection, which may make new pod fail to assign IP addresses.
-
Support ranges of CNI plugin who supports third-party IPAM plugins. Especially, the Spiderpool could help much for CNI like spiderflat, macvlan CNI, vlan CNI, ipvlan CNI, sriov CNI, ovs CNI.
-
Especially support for Multus CNI case to assign IP for multiple interfaces.
-
Have a good performance for assigning and collecting IP.
-
Support to reserve IP who will not be assigned to any pod.
-
Included metrics for looking into IP usage and issues.
-
By CidrManager, it could automatically creat new ippool for application who needs fixed IP address, and retrieve the ippool when application is deleted. That could reduce the administrator workload.
-
Support for both ARM64 and ARM64.
Refer to architecture for components.
Refer to installation.
Refer to demo.
Development guide is a reference point for development helper commands.
Spiderpool is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.