Before we deep drive into comparing AKS and ACS lets talk a bit about container orchestration and Kubernetes first.
If you are new to container please visit my previous post on What are containers and you may also visit Docker’s official website to get an understanding of what is container and why is Docker so popular these days.
What is Kubernetes and why its a buzz right now?
Form the official Kubernetes website → Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation. It has a large, rapidly growing ecosystem. Kubernetes services, support, and tools are widely available.
So basically its an container orchestration engine that is is right now among the top container orchestration engine in the market for containers, other key players being Apache Mesos/DCOS, Amazon’s ECS, Docker’s Swarm Mode etc.
Google is one of the key contributor in the Kubernetes project and its backed by Google’s over 15 years of experience in managing cluster and balancing workloads. Now it has been donated to the newly formed Cloud Native Computing Foundation.
What is ACS?
Azure Container Service allows you to quickly deploy a production ready Kubernetes, DC/OS, or Docker Swarm cluster. Its a wrapper on top of Azure IAAS which helps you quickly spin up a full production ready cluster to host your Docker containers and to choose the container orchestration engine of your choice.
Basically it provides a way to simplify the creation, configuration, and management of a cluster of virtual machines that are pre-configured to run containerized applications. Using an optimized configuration of popular open-source scheduling and orchestration tools, ACS enables you to use your existing skills or draw upon a large and growing body of community expertise to deploy and manage container-based applications on Microsoft Azure.
ACS leverages Docker images to ensure that your application containers are fully portable. It also supports your choice of Kubernetes, DC/OS (powered by Apache Mesos), or Docker Swarm for orchestration to ensure that these applications can be scaled to thousands, even tens of thousands of containers.
As per latest update from Microsoft ACS is going to retire on 31st Jan 2020.
Recommended actions from Microsoft’s official site are:
If you use ACS with Kubernetes, migrate to Azure Kubernetes Service or to the aks-engine open-source project.
If you use ACS with Docker, move to the Basic or Standard/Advanced Docker Enterprise Edition for Azure solution template.
If you use ACS with DC/OS, move to the Mesosphere DC/OS Enterprise or Mesosphere DC/OS Open Source solution template.
So its pretty much clear that if you are looking to provision a cluster to host your Docker containers its better to avoid ACS since its going to retire soon. Having said that now lets look into AKS which is Microsoft’s recommendation if you are looking for a Cluster and Kubernetes as the orchestration engine in Azure.
What is AKS?
From the official Microsoft website, AKS is the fully managed Azure Kubernetes Service which makes deploying and managing containerised applications easy. It offers serverless Kubernetes, an integrated continuous integration and continuous delivery (CI/CD) experience and enterprise-grade security and governance. Unite your development and operations teams on a single platform to rapidly build, deliver and scale applications with confidence.
Since AKS is a managed service, Microsoft handles all Kubernetes upgrades for the service, as new versions become available. Users can decide whether and when to upgrade the Kubernetes version in their own AKS cluster to reduce the possibility of accidental workload disruption. So on one hand we have seen earlier that ACS is more of IAAS (Infra as service) offering from Azure where as AKS is PAAS (Platform as service) offering from Microsoft.
You can read more about AKS below
Differences between ACS and AKS
As per Microsoft’s oficial documentation, points to consider if you are planning to migrate any existing ACS cluster to AKS
- AKS nodes use managed disks.
- Unmanaged disks must be converted before you can attach them to AKS nodes.
- Custom
StorageClass
objects for Azure disks must be changed fromunmanaged
tomanaged
. - Any
PersistentVolumes
should usekind: Managed
. - AKS supports multiple node pools.
- Nodes based on Windows Server are currently in preview in AKS.
- AKS supports a limited set of regions.
- AKS is a managed service with a hosted Kubernetes control plane. You might need to modify your applications if you’ve previously modified the configuration of your ACS masters.
Apart from the above two options if you are looking to host your containerized applications(Docker container) in Azure you have the following options available:
- Azure Service fabric cluster: Azure Service Fabric is a distributed systems platform that makes it easy to package, deploy, and manage scalable and reliable microservices and containers. Service Fabric is Microsoft’s container orchestrator for deploying microservices across a cluster of machines. Service Fabric benefits from the lessons learned during its years running services at Microsoft at massive scale. Service fabric cluster supports docker windows container deployments. In my next article I will discuss about how to deploy windows container in Azure service fabric cluster and what are the pros and cons of choosing Azure Service Fabric cluster. If you want to read more about SF cluster and running windows container inside it please visit link below.
2. Azure Web App for containers: The Azure Web App for Containers allows the creation of custom Docker container images, easily deploy and then run them on Azure. If you are not looking for cluster environment this might be a good choice for you, since this offers all the benefits of Azure PAAS and web app along with DevOps and other integrations. For more information please visit official site below.
Conclusion:
If you are looking for a fully managed cluster to host your Docker containers, AKS is one of the best option available in Azure. Since it takes away the effort of managing the cluster and the infra part of it is fully managed by Microsoft as part of the offering. On the other hand it gives all the benefit of Azure cloud and Kubernetes as a container orchestration engine as well. And since ACS is being retired so I guess we have a clear winner between the two if Kubernetes orchestration engine is considered.
Hope this article was helpful. Until next time be happy and keep learning :)