Kubernetes is an open source container orchestration platform, highly regarded for its flexibility and scalability. While Kubernetes is often considered the de facto standard for container orchestration, we recommend careful consideration before adopting due to its operational complexity. In many cases, native cloud platform orchestration options such as ECS may prove to be a better fit, especially for relatively small or simple deployments.
Cloud platforms provide managed Kubernetes services which remove some of the complexity of managing a Kubernetes cluster. If your workload requires Kubernetes then it is highly recommended to use one of these managed services rather than deploying Kubernetes on plain VMs. Examples of such services include Amazon Elastic Kubernetes Service (EKS), Azure Kubernetes Service (AKS), and the Google Kubernetes Engine (GKE).
Consider using Kubernetes when a serverless deployment model is not appropriate and at least one of these apply:
- You need to run many different services. For example, microservice architectures with 50 or more distinct services can justify using Kubernetes.
- You require advanced autoscaling to meet demanding performance and capacity requirements, beyond those which can be handled by simpler, cloud-native, orchestration tools.
- You have an immediate or high likely imminent requirement to run containers on multiple cloud platforms.