Coil is a CNI plugin that automates IP address management (IPAM) and programs intra-node Pod routing for Kubernetes.
Instead, users can choose their favorite routing daemons and/or network policy implementations for use with coil.
Project Status: All planned features are implemented.
IP address management (IPAM)
Coil dynamically allocates IP addresses to Pods.
Coil has a mechanism called address pool so that the administrator can control to assign special/global IP addresses only to some Pods.
An address pool is a pool of allocatable IP addresses. In addition to the default pool, users can define arbitrary address pools.
Pods in a specific Kubernetes namespace take their IP addresses from the address pool whose name matches the namespace if such a pool exists.
This way, only users who can create Pods in the namespace can use special/global IP addresses.
Coil divides a large subnet into small fixed size blocks (e.g.
/27), and assign them to nodes. Nodes then allocate IP addresses to Pods from the assigned blocks.
Intra-node Pod routing
Coil programs intra-node routing for Pods.
As to inter-node routing, coil publishes address blocks assigned to the node to an unused kernel routing table as described next.
Publish address blocks to implement inter-node Pod routing
Coil registers address blocks assigned to a node with an unused kernel routing table. The default table ID is
The routing table can be referenced by other routing programs such as BIRD to implement inter-node routing.
An example BIRD configuration file that advertises address blocks via BGP is available at mtest/bird.conf.
This repository contains these programs:
coil: CNI plugin.
coilctl: CLI tool to configure coil IPAM.
coild: A background service to manage IP address.
coil-controller: watches kubernetes resources for coil.
coiland CNI configuration file.
hypercoil: all-in-one binary just like
coil should be installed in
coilctl directly communicates with etcd.
Therefore it can be installed any host that can connect to etcd cluster.
coil-installer should run as
coil-controller should be deployed as
docs directory contains documents about designs and specifications.