In the past two years, Kubernetes has
claimed the lion’s share of the PaaS
and CaaS markets with the promise of
application probability across multi-
cloud and hybrid cloud environments.
However, in reality, multi-cluster management across multiple clouds is still maturing.
This blog post explores some of the Kubernetes deployment patterns for multi-cluster
applications that could scale across clouds.
KubeFed v2:
Kubernetes Cluster Federation (KubeFed) is the official Kubernetes project for resource
federation across clusters. In a typical multi-cluster environment, the federation control
plane is installed on one of the clusters to function as federation host, and the rest of the
member clusters are federated via the host cluster.
A KubeFed install enables additional APIs and features on the host cluster to implement
cluster federation, such as:
1. Kubefedctl: Along the same vein as kubectl, kubefedctl is a command-line util-
ity to create and manage any federated resources.
2. Push propagation: The KubeFed sync controller propagates any resource
types or custom resource definitions (CRDs) that require federation across
remote clusters, and maintains the desired state of the resources across member
clusters.
E.g., Running kubefedctl enable service propagates the usage of “FederatedSer-
vice” as a resource type across the member clusters.
3. Multi-cluster DNS: By default, Kubernetes deploys a name server, called
KubeDNS, to provide name resolutions within a cluster. For name resolution
between services across clusters, KubeFed utilizes the ExternalDNS controller.
FALL 2019 | THE DOPPLER | 65