Development of a Kubernetes-native cloud virtualization system, tailored to integrate with the Deckhouse Kubernetes platform, enabling compatibility with its existing modules.
Objective:
The goal was to implement cloud system functionality on the Deckhouse Kubernetes platform, ensuring maximum compatibility and management through Kubernetes objects.
Researched:
Several open-source cloud platforms, including OpenStack, OpenNebula, CloudStack, Ganeti, and KubeVirt, were evaluated. After thorough comparison, KubeVirt was chosen as the most suitable solution.
Implementation:
- Network Improvements: The initial network implementation in KubeVirt was not satisfactory, prompting significant enhancements to achieve maximum performance and stability. The realization of the new macvtap method led to a 20% reduction in network latency for standard CNI binding method.
- IPAM: A specialized IP Address Management service was developed to allocate static IP addresses for virtual machines, allowing them to operate alongside the ephemeral pods in Kubernetes.
- Distributed Router: A distributed router was implemented to monitor the location of virtual machines within the cluster and dynamically adjust routes accordingly.
- Cilium modifications: Cilium updated with custom patches to add functionality for preserving IP and MAC addresses during the live migration of virtual machines to different nodes.
Outcomes:
After the release of the alpha version, the development transferred to a dedicated virtualization team. This included the complete transfer of expertise and assistance in designing the API for the next version.
Additional Links:
This method does not requires any bridges, as a result we have less latency to communicate with other pods and VMs.
Presentation: