/spiderpool

kubernetes ipam

Primary LanguageGoApache License 2.0Apache-2.0

Spiderpool

Go Report Card CodeFactor Quality Gate Status codecov Auto Version Release Auto Nightly CI CII Best Practices badge badge badge badge badge

Status

Currently, the Spiderpool is under beta stage, not ready for production environment yet.

Introduction

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.

Why 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.

Features

The Spiderpool provides a large number of different features as follows.

  • 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 multiple interfaces for Multus CNI, a pod could specify different ippool for each interface.

  • 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.

  • An applications could bind range of fixed IP address. 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.

  • For an application deployed in different subnets or zones, its pods could get IP addresses from different subnets.

  • Collect resources in real time, especially for solving IP leakage or slow collection, which may make new pod fail to assign IP addresses.

  • By SpiderSubnet feature, it could automatically create new ippool for application who needs fixed IP address, and retrieve the ippool when application is deleted. Especially, the created ippool could automatically scale up or down the IP number when the replica number of application changes. That could reduce the administrator workload.

  • Support to reserve IP who will not be assigned to any pod.

  • Included metrics for looking into IP usage and issues.

  • Have a good performance for assigning and collecting IP.

  • Based on CRD storage, all operation could be done with kubernetes API-server.

  • Administrator could safely edit kinds of spiderpool CRD resources, the Spiderpool will help validate the modification and prevent from kinds of conflict and mistake.

  • Support for both AMD64 and ARM64.

Components

Refer to architecture for components.

Installation

Refer to installation.

Quick Start

Refer to demo.

Development

Development guide is a reference point for development helper commands.

License

Spiderpool is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.