


1. Purpose of the AKS Cluster
An Azure Kubernetes Service Cluster is used to run Containerized Applications. AKS is not a Traditional Server Platform where Administrators RDP into Servers and install Software manually. AKS provides a Managed Kubernetes Platform where Applications run as Containers inside Pods on Worker Nodes.
In AKS, Microsoft manages the Kubernetes Control Plane, including the API Server, Scheduler, Controllers, and etcd. Microsoft Maintains and Operates the Managed Control Plane Components.
2. High-Level Architecture
Azure Subscription
│
Resource Group
│
Virtual Network
│
AKS Cluster
│
├── Microsoft-Managed Control Plane
│ ├── API Server
│ ├── Scheduler
│ ├── Controllers
│ └── etcd
│
└── Customer-Managed Infrastructure Layer
├── System Node Pool
│ ├── Node 1
│ ├── Node 2
│ └── Node 3
│
├── Linux Application Node Pool
│ ├── Node 1
│ ├── Node 2
│ └── Node 3
│
└── Windows Application Node Pool
├── Node 1
├── Node 2
└── Node 3
3. Main AKS Components

AKS Cluster
Cluster-Scoped Resources
Nodes
Node Pools
Persistent Volumes
StorageClasses
Namespaces themselves
ClusterRoles
ClusterRoleBindings
CustomResourceDefinitions
The AKS Cluster is the complete Kubernetes Environment. It contains the Managed Control Plane and the Worker Node Pools where Workloads run.
Control Plane
The Control Plane is the Brain of Kubernetes. In AKS, Microsoft Manages it. You do not select the Control Plane Nodes, Size them, Patch them, or back Up etcd (et cetera distributed) directly.
Etcd (Et Cetera Distributed)
etcd is the Kubernetes State Database. It stores Cluster State, Desired Configuration, Services, Deployments, Secrets, ConfigMaps, and RBAC Objects. In AKS, Microsoft manages etcd because Microsoft Manages the Control Plane.
Node Pool
A Node Pool is a Logical Group of Worker Nodes with the Same General Configuration. AKS Groups Nodes of the same configuration into Node Pools, and those Pools Contain the underlying VM Scale sets and VMs that run Applications.
Node
A Node is an individual Azure VM/Server inside a Node Pool. Nodes provide CPU, RAM, Networking, and the OS Kernel required to run Pods and containers.
The entire Kubernetes Cluster may have maximum of 5000 Nodes and the 5000 Nodes can be allocated into max of 100 Node Pools and each Node Pool cannot have more than 1000 Nodes in the Node Pool
Max of 1000 Nodes per Node Pool
Max of 100 Node Pools per Cluster
Max of 5000 Total Nodes per Cluster
Namespace
Namespace Commonly Contains:
Pods
Deployments
Services
Secrets
ConfigMaps
Ingress rules
Persistent Volume Claims
Jobs
CronJobs
Service Accounts
RBAC Objects
A Kubernetes Namespace is a Logical Organizational and Administrative Boundary inside a Kubernetes Cluster used to separate, organize, and manage Kubernetes Resources such as Pods, Services, Deployments, Secrets, and Configurations. Namespaces provide Workload Isolation, Resource Organization, RBAC Security Boundaries, and Operational Separation for Teams, Applications, and Environments within the same Cluster.
Pod
A Pod is the smallest deployable and schedulable unit in Kubernetes. A Pod typically contains one or more Containers that run Application Instances.
Container
The Container contains the Application, runtime, Dependencies, Libraries, and Startup configuration. The Container does not contain a full OS Kernel; it uses the node OS Kernel.
Service
A Kubernetes Service Provides a stable Virtual IP and DNS Name for accessing Pods. Pods are temporary, but Services provide stable Access.
Ingress Controller
An Ingress Controller is a Layer 7 Routing Component, similar to a Reverse Proxy or Smart Load Balancer. It allows One Public IP to Route Traffic to Multiple Applications based on Hostname or Path.
4. Responsibility Model
Microsoft Responsibility
Control plane
API server
Scheduler
Core controllers
etcd
Control plane HA
Control plane patching
Control plane resiliency
Customer Responsibility
VNet and subnet planning
Node pools
Worker node sizing
Pod and app deployment
Ingress design
Application data backup
Persistent volume backup
Container images
YAML manifests
Helm charts
Security policies
Monitoring
RBAC
5. Network Planning Requirements
Before creating the AKS cluster, design the network carefully.
You should plan:
VNet Address Space
AKS Subnet
Node IPs
Pod IPs
Service CIDR
DNS Service IP
Ingress Public/Private IPs
Outbound Connectivity
Firewall Routing
Private Endpoint Integration
Hybrid Connectivity
Network Policies
Future Growth
Kubernetes networking is more IP-intensive than traditional VM networking because Kubernetes nodes, pods, services, load balancers, and ingress endpoints all require network planning. Microsoft’s AKS networking guidance explains that Kubernetes uses a virtual networking layer for access within and between applications and components.
6. Recommended Example Network Design
VNet
10.0.0.0/16
AKS Node Subnet
10.0.1.0/24
Kubernetes Service CIDR
10.100.0.0/16
DNS Service IP
10.100.0.10
Docker Bridge CIDR
172.17.0.1/16
Ingress Public IP
Example: 52.x.x.x
A /24 Subnet is a reasonable starting point for many small to medium AKS Environments because it gives roughly 251 usable Azure IP Addresses. A /27 is usually too small for production AKS because Scaling, Upgrades, Node Growth, and Pod Growth can Exhaust the Subnet Quickly.
7. IP Address Planning Rules
Node IPs
Each AKS node requires an IP Address from the AKS Subnet.
Example:
Node Pool: prod-linux-web
Node 1: 10.0.1.10
Node 2: 10.0.1.11
Node 3: 10.0.1.12
Pod IPs
Pods may require IPs depending on the AKS Networking Model.
With Azure CNI, Pod IP behavior is especially Important. Microsoft Documents that maximum Pods per Node vary by Networking Model, with Azure CNI Overlay supporting up to 250 Pods per Node and Azure CNI Pod Subnet Defaulting to 110, configurable up to 250.
Service IPs
Kubernetes Services use Virtual IPs from the Service CIDR.
Example:
Payroll Service: 10.100.0.20
HR Service: 10.100.0.21
Inventory Service: 10.100.0.22
Ingress IPs
Ingress IPs are usually much fewer than Private IPs. One Ingress Public IP can expose many Applications.
Example:
52.x.x.x
payroll.company.com
hr.company.com
inventory.company.com
api.company.com
All can Route through one Ingress Controller.
8. Example AKS IP Layout
AKS Cluster
│
├── Ingress Public IP
│ 52.160.10.50
│
├── Service CIDR
│ 10.100.0.0/16
│
└── AKS Subnet
10.0.1.0/24
Example with Three Node Pools:
Node Pool 1: Prod-System
├── Node 1: 10.0.1.10
├── Node 2: 10.0.1.11
└── Node 3: 10.0.1.12
Node Pool 2: Prod-Linux-Apps
├── Node 1: 10.0.1.20
├── Node 2: 10.0.1.21
└── Node 3: 10.0.1.22
Node Pool 3: Prod-Windows-Apps
├── Node 1: 10.0.1.30
├── Node 2: 10.0.1.31
└── Node 3: 10.0.1.32
If each Node runs three Application Pod instances:
9 Total Nodes
3 Pods Per Node
27 Total Pods
9. Node Pool Planning Rules
You always have at least One Node Pool in AKS. Even if you create One Node, that Node belongs to a Node Pool.
Use Multiple Node Pools when you Need different:
Operating Systems
VM Sizes
Scaling Behavior
Workload Isolation
Security Boundaries
Hardware Types
Cost Models
Example:
Prod-System
For Kubernetes System Pods
Prod-Linux-Web
For Linux Web Applications
Prod-Linux-API
For Linux API workloads
prod-windows-apps
For Windows containers, IIS, and .NET Framework applications
Windows Server Node Pools can run native Windows Container Applications such as .NET Framework Workloads. Microsoft recommends creating AKS Clusters with Linux and Windows Node Pools for Windows Container Scenarios.
10. Recommended Production Node Pool Design
AKS Cluster: AKS-Prod-EastUS
System Node Pool
Name: syspool
OS: Linux
Nodes: 3
Purpose: Core Kubernetes system services
Linux App Node Pool
Name: prodlinux
OS: Linux
Nodes: 3 or more
Purpose: Web apps, APIs, ingress, monitoring
Windows App Node Pool
Name: prodwin
OS: Windows Server
Nodes: 2 or more
Purpose: IIS, ASP.NET Framework, Windows containers
11. High Availability Planning
A Node Pool alone is not High Availability. HA comes from:
Multiple Nodes
Multiple Pod Replicas
Availability Zones
Load Balancing
Self-Healing
Pod Anti-Affinity
Rolling Updates
Example:
Deployment Replicas: 3
Pod 1 runs on Node 1
Pod 2 runs on Node 2
Pod 3 runs on Node 3
If one Node fails, the remaining Pods continue Serving Traffic.
12. Application Deployment Model
Applications are Not Installed Manually onto AKS Nodes.
Correct Model:
Application Code
│
Dockerfile
│
Container Image
│
Azure Container Registry
│
Kubernetes Deployment
│
Pods
│
Nodes
Developers usually create or maintain the Application and Container Image. Kubernetes Administrators or DevOps/Platform Teams control Deployment Governance, RBAC, Namespace Access, Ingress, Scaling, Monitoring, and Security.
13. Container Registry Requirement
Use Azure Container Registry (ACR) to Store Approved Container Images.
Example:
myregistry.azurecr.io/payroll:v1
myregistry.azurecr.io/hr:v1
myregistry.azurecr.io/inventory:v1
The AKS Cluster pulls Images from Azure Container Registry (ACR) and runs them as Containers inside Pods.
14. Ingress Planning
Ingress is usually deployed after AKS Cluster Creation.
Common ingress options:
NGINX Ingress Controller
Azure Application Gateway Ingress Controller
Traefik
Istio Gateway
Common Enterprise Design:
Internet
│
Public IP
│
WAF or Application Gateway
│
Ingress Controller
│
Kubernetes Service
│
Pods
One Public IP can serve many Applications through Hostname Routing:
payroll.company.com → Payroll Service
hr.company.com → HR Service
api.company.com → API Service
15. Private Cluster Decision
For production, consider a private AKS cluster. A private cluster makes the Kubernetes API server reachable privately instead of publicly. Microsoft provides AKS private cluster deployment guidance for this model.
Use Private Cluster when you require:
No public Kubernetes API exposure
Enterprise security boundary
Hub-spoke network integration
Azure Firewall inspection
ExpressRoute/VPN administrative access
16. Security Requirements
Before Deploying Workloads, Configure:
Microsoft Entra ID integration
Kubernetes RBAC
Azure RBAC for AKS
Namespace separation
Network Policies
Private ACR access
Managed identities
Key Vault integration
Image scanning
Pod security controls
Secrets management
Ingress TLS
WAF if public-facing
17. Monitoring Requirements
Deploy or Enable:
Azure Monitor Container Insights
Log Analytics workspace
Prometheus
Grafana
Alert rules
Node health monitoring
Pod health monitoring
Ingress logs
Application logs
Resource utilization dashboards
Monitor:
Node CPU
Node Memory
Pod CPU
Pod Memory
Pod Restarts
Pending Pods
Failed Deployments
IP Exhaustion Risk
Ingress Errors
DNS Errors
Storage Mount Failures
18. Backup and Recovery Requirements
In AKS, you do not directly back up etcd. Microsoft manages the control plane and etcd infrastructure.
You still must protect:
Application Data
Persistent Volumes
Azure Disks
Azure Files
Databases
Container Images
YAML Manifests
Helm Charts
Git Repositories
Secrets
Ingress Configuration
Terraform/Bicep Templates
Best Practice:
Use Git as the Source of Truth
Store Manifests and Helm Charts in Git
Use Infrastructure as Code
Back up Persistent Storage
Back up Databases Separately
Document Restore Procedures
Test Recovery Regularly
19. Step-by-Step AKS Deployment Process
Step 1: Define Requirements
Document:
Environment: Prod/Dev/Test
Region
Expected Applications
Linux or Windows Workloads
Expected Nodes
Expected Pods
Public or Private Access
Hybrid Connectivity
Security Requirements
Backup Requirements
Monitoring Requirements
Step 2: Design Network
Define:
vNet CIDR
AKS subnet CIDR
Service CIDR
DNS IP
Pod networking model
Ingress IP model
Firewall Routes
Private Endpoint Strategy
Recommended Starting Point:
VNet: 10.0.0.0/16
AKS Subnet: 10.0.1.0/24
Service CIDR: 10.100.0.0/16
DNS IP: 10.100.0.10
Step 3: Create Resource Group
az group create \
--name rg-aks-prod \
--location eastus
Step 4: Create VNet and Subnet
az network vnet create \
--resource-group rg-aks-prod \
--name vnet-aks-prod \
--address-prefix 10.0.0.0/16 \
--subnet-name snet-aks-nodes \
--subnet-prefix 10.0.1.0/24
Step 5: Create Azure Container Registry
az acr create \
--resource-group rg-aks-prod \
--name acrprod001 \
--sku Premium
Step 6: Create AKS Cluster
Example:
az aks create \
--resource-group rg-aks-prod \
--name aks-prod-eastus \
--node-count 3 \
--node-vm-size Standard_D4s_v5 \
--network-plugin azure \
--service-cidr 10.100.0.0/16 \
--dns-service-ip 10.100.0.10 \
--enable-managed-identity \
--attach-acr acrprod001 \
--generate-ssh-keys
Step 7: Add Linux Application Node Pool
az aks nodepool add \
--resource-group rg-aks-prod \
--cluster-name aks-prod-eastus \
--name prodlinux \
--node-count 3 \
--node-vm-size Standard_D4s_v5 \
--os-type Linux
Step 8: Add Windows Application Node Pool
az aks nodepool add \
--resource-group rg-aks-prod \
--cluster-name aks-prod-eastus \
--name prodwin \
--node-count 3 \
--node-vm-size Standard_D4s_v5 \
--os-type Windows
Step 9: Connect to Cluster
az aks get-credentials \
--resource-group rg-aks-prod \
--name aks-prod-eastus
Validate:
kubectl get nodes
kubectl get pods -A
kubectl get namespaces
Step 10: Deploy Ingress Controller
Example NGINX ingress using Helm:
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm install ingress-nginx ingress-nginx/ingress-nginx \
--namespace ingress-basic \
--create-namespace
Step 11: Deploy Application
Example deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: payroll-app
spec:
replicas: 3
selector:
matchLabels:
app: payroll-app
template:
metadata:
labels:
app: payroll-app
spec:
containers:
- name: payroll-app
image: acrprod001.azurecr.io/payroll:v1
ports:
- containerPort: 80
Step 12: Create Kubernetes Service
apiVersion: v1
kind: Service
metadata:
name: payroll-service
spec:
selector:
app: payroll-app
ports:
- port: 80
targetPort: 80
type: ClusterIP
Step 13: Create Ingress Rule
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: payroll-ingress
spec:
rules:
- host: payroll.company.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: payroll-service
port:
number: 80
20. Final Recommended Design Summary
Use AKS for containerized apps, especially web apps, APIs, services, and scalable workloads.
Use at least one system node pool.
Use separate user node pools for different workload types.
Use Linux node pools for most Kubernetes ecosystem services.
Use Windows node pools only for Windows container workloads.
Use a /24 or larger subnet for serious AKS deployments.
Avoid /27 except for very small labs.
Use ingress for public access.
Use one public IP for many apps when possible.
Do not manually manage etcd in AKS.
Protect workloads, manifests, images, persistent data, and Git repositories.
Use private clusters for stronger enterprise security.
Plan network and IP space before creating the cluster.
21. Simple Mental Model
Microsoft manages the Kubernetes brain.
You manage the worker body.
Node pools group the worker servers.
Nodes provide compute.
Pods run app instances.
Containers contain the apps.
Services provide stable internal access.
Ingress provides external application access.
Step-by-Step AKS Storage Configuration
1. Purpose
AKS storage is used to provide persistent and temporary storage for containerized applications. In AKS, containers should generally be treated as stateless, while important business data should be stored outside the container and outside the node local disk.
2. Main AKS Storage Types and Storage Responsibility Model
|
Component |
Storage Used |
Storage Purpose |
Managed By |
|
AKS Control Plane |
etcd storage |
Cluster state, desired configuration, RBAC, deployments, metadata |
Microsoft |
|
etcd |
Microsoft-managed backend storage |
Kubernetes state database |
Microsoft |
|
Kubernetes API Server |
Control plane storage |
Cluster orchestration metadata |
Microsoft |
|
Scheduler |
Control plane storage |
Pod scheduling metadata |
Microsoft |
|
Kubernetes Controllers |
Control plane storage |
Desired state management |
Microsoft |
|
Node OS |
Node local OS disk |
Operating system files |
Customer |
|
Container Runtime |
Node local storage |
Runtime engine, temporary container operations |
Customer |
|
Container Image Cache |
Node local storage |
Temporary cached container images |
Customer |
|
Pods |
Node local storage and/or external persistent storage |
Running application workloads |
Customer |
|
Containers |
Node local storage during runtime |
Running application instances |
Customer |
|
Container Images |
Azure Container Registry (ACR) |
Permanent image repository |
Microsoft manages platform, Customer manages images |
|
Azure Container Registry (ACR) |
Microsoft-managed Azure cloud storage |
Container image storage and distribution |
Microsoft |
|
Stateless Applications |
Primarily node local runtime storage |
Temporary runtime operations |
Customer |
|
Stateful Applications |
External persistent storage |
Persistent business/application data |
Customer |
|
Azure Managed Disks |
Azure managed block storage |
Databases, single-instance persistent workloads |
Microsoft manages platform, Customer manages data |
|
Azure Files |
Azure managed SMB/NFS storage |
Shared enterprise file storage |
Microsoft manages platform, Customer manages data |
|
Azure NetApp Files |
Enterprise-grade Azure file storage |
High-performance shared enterprise storage |
Microsoft manages platform, Customer manages data |
|
Azure Blob Storage |
Azure object storage |
Documents, backups, archives, logs |
Microsoft manages platform, Customer manages data |
|
Persistent Volume (PV) |
External storage backend |
Kubernetes storage abstraction |
Customer |
|
Persistent Volume Claim (PVC) |
External storage backend |
Application storage request |
Customer |
|
ConfigMaps |
etcd |
Non-sensitive application configuration |
Customer |
|
Secrets |
etcd |
Sensitive configuration and credentials |
Customer |
|
Services |
etcd |
Virtual IP and networking metadata |
Customer |
|
Ingress Rules |
etcd |
Traffic routing configuration |
Customer |
|
Namespaces |
etcd |
Logical workload organization metadata |
Customer |
|
Deployments |
etcd |
Application deployment definitions |
Customer |
|
Jobs/CronJobs |
etcd |
Scheduled workload definitions |
Customer |
|
Logs and Monitoring Data |
Azure Monitor / Log Analytics / External platforms |
Monitoring and observability |
Microsoft manages platform, Customer manages monitoring configuration |
|
Backup Data |
Azure Backup / Blob Storage / External backup systems |
Disaster recovery and retention |
Customer |
3. AKS Storage Architecture

4. Key Kubernetes Storage Objects
StorageClass
A StorageClass defines the type of storage Kubernetes can dynamically provision.
Examples:
managed-csi
managed-csi-premium
azurefile-csi
azurefile-csi-premium
AKS uses CSI drivers to connect Kubernetes to Azure Disks, Azure Files, and Azure Blob storage. Microsoft states that CSI support in AKS allows Azure Disks, Azure Files, or Azure Blob storage to be used as persistent storage for AKS applications.
Persistent Volume
A Persistent Volume represents the actual storage resource.
Example:
100 GB Azure Managed Disk
Azure Files share
Azure NetApp Files volume
Persistent Volume Claim
A Persistent Volume Claim is the application’s request for storage.
Example:
Application requests 100 GB persistent storage
5. When Storage Is Configured
Storage is usually configured after the AKS cluster is created and before or during application deployment.
1. Create AKS cluster
2. Confirm CSI drivers and StorageClasses
3. Create or select storage backend
4. Create PVC
5. Deploy application pod
6. Mount storage into container
Storage is not usually attached to the cluster like traditional shared cluster storage. Instead, workloads request storage through PVCs.
6. Step 1: Validate Available StorageClasses
Run:
kubectl get storageclass
Typical Result:
managed-csi
managed-csi-premium
azurefile-csi
azurefile-csi-premium
AKS includes built-in storage classes and reconciles the default storage classes, so Microsoft warns that changes to default storage classes may be overwritten.
7. Step 2: Choose the Correct Storage Type
Use Azure Managed Disk when the workload needs block storage and is usually attached to one pod.
Good For:
SQL Server
PostgreSQL
MongoDB
Single-instance stateful applications
High-performance block storage
Microsoft’s Azure Disk AKS guidance describes Azure Disk persistent volumes as storage for use by a single pod.
Use Azure Files when multiple pods need shared access to the same storage.
Good For:
Shared uploads
Shared configuration files
SMB file shares
Windows container workloads
Multiple pod access
Microsoft’s Azure Files AKS guidance states that Azure Files can be used when multiple pods need concurrent access to the same storage volume, using SMB or NFS.
Use Azure Blob Storage when the application needs object storage.
Good For:
Backups
Archives
Documents
Logs
Images
Videos
Large object storage
Use Azure NetApp Files when enterprise-grade high performance shared storage is required.
Good For:
Large databases
SAP workloads
Oracle workloads
High-throughput file workloads
Low-latency enterprise storage
8. Step 3: Create PVC for Azure Disk
Example PVC:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: payroll-disk-pvc
namespace: payroll-prod
spec:
accessModes:
- ReadWriteOnce
storageClassName: managed-csi-premium
resources:
requests:
storage: 100Gi
Apply:
kubectl apply -f payroll-disk-pvc.yaml
9. Step 4: Mount Azure Disk Into a Pod
Example Deployment:
apiVersion: apps/v1
kind: Deployment
metadata:
name: payroll-app
namespace: payroll-prod
spec:
replicas: 1
selector:
matchLabels:
app: payroll-app
template:
metadata:
labels:
app: payroll-app
spec:
containers:
- name: payroll-app
image: acrprod001.azurecr.io/payroll:v1
volumeMounts:
- mountPath: /data
name: payroll-storage
volumes:
- name: payroll-storage
persistentVolumeClaim:
claimName: payroll-disk-pvc
10. Step 5: Create PVC for Azure Files
Example:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: shared-files-pvc
namespace: payroll-prod
spec:
accessModes:
- ReadWriteMany
storageClassName: azurefile-csi-premium
resources:
requests:
storage: 100Gi
Apply:
kubectl apply -f shared-files-pvc.yaml
11. Step 6: Mount Azure Files Into a Pod
Example:
apiVersion: apps/v1
kind: Deployment
metadata:
name: payroll-web
namespace: payroll-prod
spec:
replicas: 3
selector:
matchLabels:
app: payroll-web
template:
metadata:
labels:
app: payroll-web
spec:
containers:
- name: payroll-web
image: acrprod001.azurecr.io/payroll-web:v1
volumeMounts:
- mountPath: /shared
name: shared-files
volumes:
- name: shared-files
persistentVolumeClaim:
claimName: shared-files-pvc
This allows multiple pods to use the same shared storage.
12. Step 7: Validate Storage
Run:
kubectl get pvc -n payroll-prod
kubectl get pv
kubectl describe pvc shared-files-pvc -n payroll-prod
kubectl describe pod payroll-web -n payroll-prod
Check:
PVC status is Bound
PV exists
Pod is Running
Volume is mounted
Application can write to mounted path
13. Step 8: Configure Backup
Back up persistent application data.
Recommended Backup Targets:
Azure Disks
Azure Files
Databases
Blob Storage
Application files
Persistent volumes
Do not rely on node local storage for business data.
Microsoft’s AKS storage best practices emphasize understanding application performance and access needs, selecting the right storage type, and planning backup and restore testing for attached storage.
14. Best Practices
Use external persistent storage for business data.
Do not store critical data inside containers.
Do not rely on node local disks for persistent application data.
Use Azure Container Registry for container images.
Use Azure Disk for single-pod block storage workloads.
Use Azure Files for shared multi-pod storage.
Use Azure NetApp Files for high-performance enterprise shared storage.
Use Blob Storage for object storage, backups, archives, and logs.
Use PVCs instead of hard-coding storage directly into pods.
Use StorageClasses for repeatable storage provisioning.
Use separate storage classes for performance tiers.
Use encryption at rest.
Use private endpoints where required.
Use managed identities and least privilege permissions.
Back up application data separately from AKS control plane.
Test restore procedures regularly.
Keep Kubernetes manifests, Helm charts, and storage definitions in Git.
Do not modify AKS default storage classes directly if avoidable, because AKS may reconcile default classes.
15. Summary
Container Images → Azure Container Registry
Temporary Runtime Data → Node Local Storage
Persistent Single-Pod Data → Azure Managed Disk
Persistent Shared Data → Azure Files or Azure NetApp Files
Object Data and Backups → Azure Blob Storage
Kubernetes Cluster State → etcd, managed by Microsoft in AKS

0 comments