Submariner is a networking component designed to interconnect Pods and Services across multiple Kubernetes clusters by connecting their overlay networks. Written in Go, it functions as a Cloud Native Computing Foundation sandbox project and addresses the challenge of enabling seamless communication between Kubernetes clusters that would otherwise operate in isolation. The project is CNI-agnostic, meaning it works with various container network interfaces, and supports both encrypted and non-encrypted tunnels for inter-cluster traffic.
The architecture of Submariner routes traffic between clusters through elected gateway nodes in each cluster, utilizing a configured cable driver for the actual tunnel transmission. When a Pod on a worker node needs to communicate with a remote cluster, traffic first transits through a VXLAN tunnel called vx-submariner to reach the local gateway node. From there, it travels through the configured tunnel to the remote cluster's gateway node. The final routing depends on the destination type: traffic destined for Pod networks is routed through CNI-programmed networks, while traffic for Service networks is routed through kube-proxy facilities on the destination gateway node.
Submariner deployment is managed through a Go-based Kubernetes Operator called submariner-operator, which provides API-based installation and lifecycle management. The project offers multiple deployment methods to accommodate different user preferences and workflows. The subctl command-line utility is the recommended deployment approach, as it serves as the default in continuous integration environments and includes diagnostic features for troubleshooting. Alternatively, users can deploy Submariner using Helm charts for those preferring declarative configuration management.
The project maintains comprehensive documentation covering prerequisites, installation procedures, validation steps, and troubleshooting guidance. Users can verify successful Submariner deployment through the subctl verify command and access automated troubleshooting tools. The repository includes building and testing documentation for developers who wish to contribute or customize the codebase.
The project acknowledges that it remains in an early stage of development, and while it welcomes experimentation and usage, users should be prepared for potential bugs. The repository demonstrates active maintenance through multiple automated workflows including Release Images, Periodic testing, and Flake Finder processes, indicating ongoing quality assurance efforts. The project has achieved CII Best Practices certification, reflecting its commitment to security and development standards. Contributing guidelines are available for developers interested in participating in the project's evolution.