The Doppler Quarterly Fall 2019 | Page 67

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