What it is: Federated Kubernetes is a way of deploying Kubernetes, the popular container orchestration framework, over multiple platform providers or including on-premises and public clouds. Using federation, enterprises can split their applications over multiple clouds, or over combinations of cloud and on-premise to support scalability, resiliency, and platform choice.
What it does: Federated Kubernetes deployment involves splitting a Kubernetes cluster into multiple distributed clusters. One is a ‘host’ cluster: this becomes the default for all the other clusters, which are clones by default. Then, these clusters are all managed through a Federation Controller Manager, which monitors performance and ensures consistency, among other functions.
Why it matters: Kubernetes, without any federation, is already a powerful way to deploy and scale applications. However, there are inherent drawbacks to deploying a Kubernetes application on one platform only. For example, if that datacenter or public cloud provider goes down or experiences performance issues, the entire deployment suffers. Additionally, your configuration can suffer from vendor lock-in if it’s set up for one cloud provider only. Also, federation can, in some cases, achieve increased performance, by allowing for applications to be consistently hosted closer to the edge, potentially increasing performance. Also, the ability to partition applications to run on different platforms thus providing a division of processing that supports higher performance, considering that the application can take a “divide and conquer” approach. Finally, federation allows you to combine on-premise resources with cloud seamlessly
What to do about it: Consider federation if your Kubernetes deployment is encountering reliability or performance issues (or has the potential to do so), and/or if you’re concerned about vendor lock-in, and/or if you have on-premise resources you’d like to leverage as part of a cloud solution. Keep in mind that Federated Kubernetes is a complex way of approaching a framework that’s already complicated and that it hasn’t completely matured.