Azure Kubernetes Service (AKS) Concepts

Understand the core concepts and architecture of Azure Kubernetes Service.

Introduction to Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) simplifies deploying, managing, and automating Kubernetes applications. AKS provides a managed Kubernetes experience, allowing you to focus on your applications rather than the underlying infrastructure. It integrates deeply with other Azure services, offering a robust platform for containerized workloads.

Kubernetes Architecture

Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications. It groups containers that make up your applications into logical units for easy management and discovery. A Kubernetes cluster consists of two main types of resources:

AKS Components

When you create an AKS cluster, Azure manages the Kubernetes control plane for you. This includes:

You are responsible for managing the worker nodes in your cluster, although AKS provides tooling to simplify this. Nodes run the following components:

Nodes and Node Pools

A Node is a virtual machine in your AKS cluster that runs your application workloads. Each AKS cluster must have at least one node. A Node Pool is a group of nodes within an AKS cluster that all have the same configuration. Node pools allow you to manage groups of nodes independently.

AKS supports different VM sizes and types for your nodes. You can have multiple node pools with different VM sizes or operating systems to accommodate various application requirements.

Virtual Kubelet

AKS also supports the Virtual Kubelet, which allows you to integrate with serverless container services like Azure Container Instances (ACI). This enables you to run Pods on-demand without managing the underlying infrastructure.

Pods and Deployments

A Pod is the smallest deployable unit in Kubernetes. It represents a single instance of a running process in your cluster and can contain one or more containers that share resources like network and storage. While you can create Pods directly, it's more common to manage them through higher-level abstractions.

A Deployment is a Kubernetes object that manages a stateless application. It provides declarative updates for Pods and ReplicaSets. A Deployment defines the desired state for your application, and Kubernetes ensures that the actual state matches the desired state. Key features include:

Services and Ingress

Services provide a stable IP address and DNS name to a set of Pods. They act as a load balancer, distributing network traffic to Pods. Kubernetes Services are essential for enabling communication between different parts of your application and for exposing your application to the outside world.

Ingress manages external access to services in a cluster, typically HTTP. It provides routing rules, TLS termination, and name-based virtual hosting. An Ingress controller is required to fulfill the Ingress resources, and AKS can deploy and manage one for you.

Storage in AKS

AKS integrates with Azure Storage services to provide persistent storage for your containerized applications. Common storage options include:

You can dynamically provision storage using StorageClasses, which abstract the details of the underlying storage provider.

Networking in AKS

AKS provides flexible networking options to manage communication within your cluster and with external resources. Key networking concepts include:

Security and Access Control

Security is paramount in AKS. Azure provides several mechanisms to secure your cluster:

Key Takeaway

Understanding these core concepts is fundamental to effectively deploying and managing containerized applications on Azure Kubernetes Service. AKS abstracts much of the Kubernetes complexity, allowing you to leverage the power of Kubernetes with the benefits of a managed cloud platform.