Bich Le, our Co-founder and Chief Architect continued his series of webinars on containers and Kubernetes on June 14. This time, he talked about using these technologies across on-premises and public cloud environments in a true hybrid cloud fashion.
Containers have taken a large amount of developer mindshare and for good reason: they allow devs to leapfrog virtualization technologies. Portability and reusability can help ensure that faster and more efficient development cycles are realized by DevOps teams everywhere.
Portability allows a Linux container created on one machine to run on another Linux machine, regardless of installed software, underlying operating system or hardware. With containers, developers can create, update, share, and deploy software faster.
Reusability allows developers to use and distribute containers instead of virtual machines. By reusing containers, operators can more efficiently use their hardware resources: compute, memory, and storage. Containers are also more efficient to work with: they can be spun up, updated, and disposed off much faster than virtual machines for the same workloads.
Hybrid refers to the ability to deploy workloads on-premises and in the cloud, with support for some integration between them. These integrations could include high availability, disaster recovery, or cloud bursting. Here are some examples:
- High Availability: On premises installation of SQL Server which is configured with a replica in the public cloud. (source: Design a private and hybrid cloud for High Availability and Disaster Recovery with SQL Server 2016)
- Disaster Recovery: A web server and database running on private cloud, and a standby installation on the public cloud. In the event of a disaster in the data center, an operator brings up the standby installation.
- Cloud Bursting: A retailer who chooses to keep ecommerce applications in the datacenter, but use the cloud for excess demand during the holiday season.
Bringing It All Together
Federation, an open-source project within Kubernetes, brings together the concepts of containers and hybrid cloud. A federation can synchronize Kubernetes cluster resources to ensure that copies of these resources exist in multiple data centers and clouds. A federation can also have work distributed across different clusters through DNS and load balancers.
Kubernetes Federation Use Cases
You may want to setup cluster federation for any of these reasons:
High availability: A kubernetes service provides access to a set of pods in your cluster. All these pods provide the same functionality, and communication to the service will be load balanced to one of the pods. Cluster federation seeks to allow you to spread a service across multiple data centers, between availability zones/regions of a cloud provider, or multiple cloud providers. (similar to the SQL Server example above)
Bursting: You may also seek to run most of your containerized workloads on premises, but “spill-over” to the public cloud when it’s not possible to meet the capacity demand. (similar to the retailer example above)
Security: Based on the sensitivity of the data, you may want to have workloads running in both public cloud and on-premises data centers.
Avoid lock-in: The use of cluster federation allows you to distribute containers among multiple cloud providers, on premises data centers, and colocation facilities. In so doing, you can avoid lock-in to a particular cloud, and choose the best value infrastructure and services.
Next Steps: Upcoming Webinar
As mentioned earlier, Bich Le talked in detail about Using Containers in Hybrid Clouds with Kubernetes on June 14. Watch the recording now!