Orchestrating with Kubernetes in Azure Container Service
The last time I wrote about Azure Container Service, little did I know that Microsoft would be coming up with the container service in the same week, specifically focused on Kubernetes as an orchestrator. Microsoft had already made its intentions clear as to what it wanted as its orchestration expert. In April last year, they announced intent to acquire Deis, a Kubernetes container management technology company that expertizes in creating and managing applications on Kubernetes, K8s-native platforms, and package management. Their recent contribution to the Cloud Native Computing Foundation, plus the addition of Brendan Burns, one of the co-creators of Kubernetes, to lead their container front, meant they wanted Kubernetes as their prime orchestrator.
In October 2017, Microsoft announced a container service based on Kubernetes called AKS. Though ACS, introduced in 2015, still provides support for other orchestrators like Swarm and DC/OS, AKS will focus more on Kubernetes. According to Microsoft officials, Kubernetes demand had seen an eye-popping hike, and to answer this increasing demand, Azure must have gone from ACS to AKS. Shifting focus from multiple orchestrators to Kubernetes means standard Kubernetes API endpoints, which will help you leverage any software that can work with Kubernetes clusters. It also means you can now utilize Kubernetes-native tools such as kubectl, kubeadm, kubefed as well as third-party tools like Helm, Kompose, Draft, etc.
What’s so special about AKS?
Using AKS simply means you are getting the most popular container orchestration solution along with feature-rich Azure. At the same time, you have the application portability through Kubernetes and the Docker image format. In addition to the tools and rich feature set, Kubernetes is open source and well known for its hyperactive community, KubeCon, and SIGs, which make working on Kubernetes a bliss. Add Microsoft's tech support to this equation, and you can probably erase most of the combinations from the equation. Kubernetes simplifies the deployment, scaling, and operations of application containers. And with AKS, you can leverage all the Kubernetes tools, develop and deploy K8s container clusters with any language and framework, and you have ACS-Engine. ACS-Engine is the heart of Azure Container Service, and it can help your Kubernetes clusters by customizing Azure Resource Manager templates according to your needs and boosting the overall AKS experience. As far as deployment is concerned, you can do it via Azure-CLI. Additionally, you can take a snapshot of the already created and configured templates and deploy it again if you want to, instead of starting from scratch.
Kubernetes can get you automated version upgrades and patching, self-healing, hosted control plane, load balancing, execution, scaling, and management of containerized applications. With AKS, you can run Kubernetes on a larger scale, deploy highly available Kubernetes master nodes and add/remove worker nodes through the console. The only downside to this is the manual upgrading of Kubernetes nodes.
In a typical DevOps pipeline, you have multiple tools for all the code-build-test-release-deploy phases. For continuous deployment part, AKS can make a big difference with better management through modularity. The way Kubernetes manages its service and controllers, along with clubbing multiple applications on a single pod and load balancing, I don’t think any other orchestration tool allows you to do that. Other tools in the deployment phase may require external load balancers, but Kubernetes saves you from this hassle. Plus, Kubernetes controllers make it easy to manage the application lifecycle. You can deploy and update software at scale with Kubernetes, and it will simplify the canary deployment, horizontal autoscaling, and rolling updates in a continuous deployment phase.
AKS in preview mode is free. And unlike most of the other providers where you pay on per hour basis, here you pay only for the VMs you are using or the running agent pool nodes. This reduces your operating expenditure by a considerable amount.
We all know Google’s contribution to Kubernetes and increasing traction to Kubernetes meant Azure and Amazon had some catching up to do. And this might be Microsoft’s chance to counter Google Cloud by using their tool. Microsoft’s Azure Container Service (AKS) is still the youngest of the three giants to support Kubernetes, and there are still some areas that need to be addressed, like abstract management, but considering Microsoft’s huge technical knowledge pool, it is just a matter of time before we see a full-fledged release of AKS. Microsoft is also working on Kubernetes GPU Project which can help you take care of GPU constraints and pod scheduling. I am sure we can expect a lot of services coming up from Microsoft around K8s in the near future. Opcito has been helping clients with Kubernetes expertise in designing and developing CI/CD pipelines for complex application infrastructure, orchestrating the container clusters, securing Kubernetes clusters, building highly scalable deployment ecosystems, and creating, managing, and orchestrating clusters in the Azure cloud. Now with a fully managed Kubernetes container orchestration service from Azure, I can only expect augmentation in the container cluster delivery graph.