What is Multi-Cloud Kubernetes?
Multi-cloud is now the standard, with most organizations migrating to the cloud operating on more than one public cloud platform. Managing workloads across multiple clouds can be extremely complex, especially when there is a need to move workloads flexibly from one cloud to another.
Kubernetes, the de facto standard for container orchestration, is increasingly seen as a solution for multi-cloud deployment. Kubernetes is battle tested on all public cloud platforms. Kubernetes clusters can, at least in principle, be easily ported between public clouds. It is even possible to split the same cluster between clouds, to leverage relative cost benefits or infrastructure features.
However, running Kubernetes is not trivial, even more so when deploying Kubernetes across multiple clouds. Read on to understand basic requirements and best practices that can make it effective.
Requirements for Multi Cloud Management With Kubernetes
The following are critical requirements you should consider if you need to run Kubernetes clusters across multiple cloud providers.
Cluster Configuration
When setting up a Kubernetes configuration, consider the cluster topology that best suits your application needs. There are several ways to implement a multi-cloud strategy, including:
- Running a single Kubernetes cluster, with specific worker nodes running in a different cloud than the master node
- Running multiple high availability clusters, each running in a different cloud, and balancing workloads between them
Automation
You can set up Kubernetes from scratch and manually deploy nodes to another cloud, but this is error prone and time consuming. Furthermore, to enable CI/CD development, you must automate the configuration of new nodes and clusters. There are a number of third-party tools that support automated deployment of Kubernetes across multiple cloud services.
Security
There are special security challenges in a multi-cloud environment. You need to have monitoring infrastructure that can operate in multiple clouds and report on threats wherever they occur. It is not enough just to detect threats in cloud environments-security teams must be able to assess the impact of these threats and respond to them remotely.
Multi Cloud Kubernetes Best Practices
Here are a few ways to make your multi-cloud Kubernetes deployment a success.
Leverage Vendor Agnostic Infrastructure
All cloud providers provide networking, storage, and automation capabilities such as auto scaling. The question is whether to use those capabilities directly, or leverage an abstraction layer. It is best to find a middle ground that lets you directly access cloud provider features, without locking yourself into a specific cloud provider’s implementation.
For example, on AWS, you can use the Container Network Interface (CNI) plugin to create overlay networks. This provides Kubernetes-native networking capabilities. By coding to the CNI standard, you can remain compatible with Kubernetes clusters running in other clouds, while having the freedom to use security groups and other Amazon services such as Identity and Access Management (IAM).
Allow Teams to Choose Kubernetes Versions
New versions of Kubernetes come out about once per quarter. A key consideration is whether to ask your cloud provider to manage Kubernetes and handle upgrades for you, or allow teams to use new versions upstream.
Vendor managed Kubernetes is tested and validated by the provider. However, the Kubernetes community itself has a mature development, testing, and release process. The Kubernetes project consists of a series of subcommittees (SIGs), which are responsible for ensuring the quality and stability of each new version.
It is best for enterprises to use stable releases in production environments. However, some teams may want to use new Kubernetes features in development. A good balance may be to give teams the freedom to experiment with multiple proven Kubernetes versions upstream, while standardizing on a vendor-managed version in production.
Standardize Cluster Deployments
When deploying Kubernetes on several clouds, it is a good idea to standardize key parameters of cluster deployment. These include:
- Kubernetes version-all teams must use either one version, or several agreed versions of Kubernetes.
- Networking and storage-use standards like CNI and Container Storage Interface (CSI) to ensure clusters communicate with network and storage in a standard manner. Leverage ingress controllers as reverse proxies, to ensure traffic is balanced transparently between clouds.
- Monitoring and logging-clusters should use monitoring components that are comparative with all relevant cloud environments and all relevant workloads running in each cloud. Use a centralized logging solution that can aggregate logs from application workloads and Kubernetes components across all clouds.
- Any other components needed to run the cluster, such as security tools, DNS, infrastructure as code (IaC) components and auto scaling strategies.
Try to codify cluster deployment as a template, which you can deploy consistently on any cloud. You can even enable self-service requests for entire clusters-allowing a cluster to be deployed on a cloud by selecting it from a service catalog.
Conclusion
Multi cloud Kubernetes has the potential to transform cloud operations. Instead of cumbersome management of non-compatible infrastructure across multiple clouds, you can port workloads with a click of a button, ensuring it works consistently in every cloud.
I discussed several requirements and best practices for running Kubernetes in a multi cloud environment:
- Design cluster configuration to enable multi cloud deployment
- Automate Kubernetes cluster deployment
- Implement monitoring and security tools appropriate for a multi cloud environment
- Use vendor agnostic infrastructure like the Container Network Interface (CNI)
- Give teams freedom to select Kubernetes versions for development and testing
- Standardize cluster deployment across teams and workloads
I hope this will be helpful as you move towards a true multi-cloud Kubernetes deployment.
##
About the Author
Gilad David Maayan is a technology writer who has worked with over 150 technology companies including SAP, Samsung NEXT, NetApp and Imperva, producing technical and thought leadership content that elucidates technical solutions for developers and IT leadership.
LinkedIn: https://www.linkedin.com/in/giladdavidmaayan






