Choosing the right Container Network Interface (CNI) for a Kubernetes cluster might either be trivial since it was pre-configured by a cloud provider, or it could be a complex problem with many different options, all with their specific advantages and disadvantages. While there are studies on how many of these CNIs perform on raw network data, few works examining specific application workloads have been studied. In this thesis we examine how different dataplanes of the Calico CNI impact performance of a networked PostgreSQL application. A short introduction to how networking is implemented in Kubernetes along with more specific details concerning the Calico CNI and eBPF internals are presented.
We show that running database queries over the network yield similar results to previous studies done with raw network benchmarks, thus concluding that processing bottle-necks in the networking layer negates performance losses in the application layer. Finally we conclude that using the eBPF dataplane in Calico performs better where networked applications are located on the same node, while traditional Iptables networking provide a small improvement where applications are located on different nodes.