Deep dive on Kubernetes for container orchestration
Ali Hussain, Cloud Solution Architect
An overview of containers and orchestrators
The container frenzy is in full swing across the IT universe. Containers have fundamentally changed how developers build and deploy their applications and system administrators manage their environments. Containers offer a broadly accepted and open standard, enabling simple portability between platforms and between clouds. Moreover, containers give control of the applications, their dependencies, and the infrastructure that they run on back to developers. By abstracting the infrastructure binaries, containers put the onus of uptime back in the hands of the development teams. Compiled code and the dictated configurations for said code are no longer handed over to operations teams to be run and maintained. Instead, development teams output a fully vetted Docker image which contains the application code, its dependencies, and the required configurations.
The application that manages the containers is called a container orchestrator. The process of orchestration typically involves tooling that can automate all aspects of application management from initial placement, scheduling, and deployment to steady-state activities, such as deployment, update, and health monitoring functions that support scaling and failover.
The orchestrator I would like to discuss today is Kubernetes that is emerging as the front runner in the orchestration space. The Azure platform has three services that make it easy to deploy and manage Kubernetes clusters. The services are Azure Kubernetes managed Service (AKS), Azure Container Service Engine (ACS-engine), and Azure Container Instance.
Why should you use Kubernetes?
Kubernetes is a popular solution and has a strong developer community. The application has been proven at scale and is evolving constantly. It is the only orchestrator that has cloud-provider concept natively, which allows seamless integration into public clouds, such as Microsoft Azure, Amazon Web Services, and Google Cloud Platform. With cloud providers making investments in services, such as AKS, ACS-Engine, ACI and Google Container Engine (GKE), it is a solid option among the several orchestrator options.
Azure Kubernetes Service (AKS)
Azure Kubernetes Service is a recently released service in preview that makes it easier to manage and operate Kubernetes environments without sacrificing portability. AKS features an Azure-hosted control plane, automated upgrades, self-healing, easy scaling, and a simple user experience for both developers and cluster operators. With AKS, customers get the benefit of open source Kubernetes without complexity and operational overhead. AKS is free, and you only pay for the consumption resulting from agent nodes and the infrastructure associated with them.
Azure Container Instance – Kubernetes Connector (Preview)
An Azure Container Instance is a single container that starts in seconds and is billed by the second. ACI offer highly versatile sizing, allowing you to select the exact amount of memory separate from the exact count of vCPUs, so your application seamlessly fits on the infrastructure.
The Azure Container Instances Connector for Kubernetes allows Kubernetes clusters to deploy Azure Container Instances. This enables on-demand and nearly instantaneous container compute, orchestrated by Kubernetes, without having VM infrastructure to manage and while still leveraging the portable Kubernetes API. This will allow you to utilize both VMs and container instances simultaneously in the same Kubernetes cluster.
Azure Container Service Engine (ACS-Engine)
Currently there is a service called Azure Container Service (ACS) which will be deprecated in favor of a managed Kubernetes service described above (AKS). However, there is still an open-source project called ACS-Engine which can be used to deploy unmanaged clusters on the Azure platform. The Azure Container Service Engine (acs-engine) generates ARM (Azure Resource Manager) templates for Docker enabled clusters on Microsoft Azure with your choice of DCOS, Kubernetes, or Swarm orchestrators. The input to acs-engine is a cluster definition file which describes the desired cluster, including orchestrator, features, and agents.
Deploying cluster on Azure VMs manually
The final option to deploy an orchestrator is to deploy generic Azure VMs and install and configure the appropriate orchestrator from scratch. This is the most complex method of deployment and management but it allows for the most control over the deployed orchestrator.
Azure Kubernetes Service: Use AKS when you want the Kubernetes Application managed for you.
Azure Container Service – Engine: Use ACS-Engine when you want an unmanaged Kubernetes deployment but do not want to worry about the deployment and configuration of bringing up a K8s cluster.
Kubernetes on Azure VMs: Deploy K8s on Azure VMs when you want full control on what is being executed to bring up the cluster.
Azure Container Instance – Kubernetes Connector: Use this service to have your cluster burst its computing capacity for short periods of time.
If you’d like to hear more on this topic, register for the Applications and Infrastructure Community call on Friday, November 17. The call will provide insight into what is most important in the Microsoft partner ecosystem. We’ll have a conversational dialogue between two technology professionals that is designed to appeal to technical, sales, and business professionals. One presenter will discuss containers from an infrastructure perspective, the other from an application development perspective.
- Case Study
- AKS Announcement Video
- ACI – Kubernetes Connector
- Jenkins Plugins for Kubernetes
- Azure Container Registry General Availability
- Use Helm with Azure Container Service and Kubernetes
- Azure Container Registry Geo-replication