Distribuzione di carichi di lavoro su AKS
Crei un cluster AKS, distribuisca un'applicazione multi-container usando kubectl e i chart Helm e la renda accessibile dall'esterno con un servizio Azure Load Balancer.
Distribuzione di carichi di lavoro su AKS è una lezione Cloud & IT Cert Prep gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cloud & IT Cert Prep, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.
Che cos'è Azure Kubernetes Service?
Azure Kubernetes Service (AKS) è un'offerta Kubernetes gestita in cui Microsoft gestisce e mantiene il control plane (server API, etcd, scheduler) senza costi aggiuntivi. Lei paga solo i nodi worker (VM). AKS gestisce gli aggiornamenti della versione di Kubernetes, l'applicazione delle patch al sistema operativo dei nodi, il dimensionamento del control plane e l'integrazione con rete, archiviazione e identità di Azure. Questo riduce drasticamente il carico operativo legato all'esecuzione di Kubernetes in produzione.
Creazione di un cluster AKS
Crei un cluster AKS con az aks create, specificando il numero di nodi, la dimensione delle VM e le opzioni di rete. AKS crea automaticamente un gruppo di risorse dei nodi contenente le VM, i dischi gestiti, le NIC e i bilanciatori del carico. La modalità di rete consigliata è Azure CNI: ogni pod riceve un indirizzo IP reale della VNet, consentendo la connettività diretta con gli altri servizi Azure senza NAT.
# Create an AKS cluster with 3 nodes
az aks create \
--name myAKSCluster \
--resource-group MyRG \
--location eastus \
--node-count 3 \
--node-vm-size Standard_D2s_v3 \
--enable-managed-identity \
--attach-acr mycontainerregistry \
--network-plugin azure \
--generate-ssh-keys
# Get kubectl credentials
az aks get-credentials --name myAKSCluster --resource-group MyRGPool di nodi
I cluster AKS possono avere più pool di nodi, ovvero gruppi di VM con la stessa configurazione. Il pool di nodi di sistema esegue i componenti critici del sistema Kubernetes (i pod kube-system). I pool di nodi utente eseguono i carichi di lavoro delle applicazioni. Pool separati consentono di combinare SKU di VM diversi, ad esempio un pool per uso generico per le app web e un pool GPU per i carichi di lavoro di machine learning, e di ridimensionarli in modo indipendente.
# Add a GPU node pool for ML workloads
az aks nodepool add \
--cluster-name myAKSCluster \
--resource-group MyRG \
--name gpupool \
--node-count 2 \
--node-vm-size Standard_NC6s_v3 \
--node-taints sku=gpu:NoSchedule
# List node pools
az aks nodepool list \
--cluster-name myAKSCluster \
--resource-group MyRG \
-o tableDistribuzione di un'applicazione multi-container
Distribuisca un'applicazione multilivello in AKS scrivendo file manifest Kubernetes separati per ogni livello e applicandoli con kubectl apply. Una distribuzione tipica include un Deployment per il livello web, un Deployment per il livello API, i Services per collegarli, una ConfigMap per la configurazione dell'ambiente e una risorsa Ingress per esporre l'applicazione all'esterno tramite un unico hostname.
# Apply all manifests in a directory
kubectl apply -f k8s/
# Or apply individual files
kubectl apply -f frontend-deployment.yaml
kubectl apply -f frontend-service.yaml
kubectl apply -f api-deployment.yaml
kubectl apply -f api-service.yaml
kubectl apply -f ingress.yaml
# Watch rollout status
kubectl rollout status deployment/frontend
kubectl rollout status deployment/apiIngress e Application Gateway
Una risorsa Ingress definisce regole di routing HTTP che associano hostname e percorsi URL ai servizi backend. A differenza di un servizio LoadBalancer, che usa un IP esterno per ogni servizio, un singolo controller Ingress gestisce tutto il traffico HTTP esterno e lo instrada in base alle regole. In AKS, utilizzi il NGINX Ingress Controller o l'Application Gateway Ingress Controller (AGIC) per terminare TLS e instradare il traffico verso più servizi.
# Ingress routing traffic to two services by path
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: myapp-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx
tls:
- hosts: [myapp.contoso.com]
secretName: myapp-tls
rules:
- host: myapp.contoso.com
http:
paths:
- path: /api
pathType: Prefix
backend:
service: {name: api-svc, port: {number: 80}}
- path: /
pathType: Prefix
backend:
service: {name: frontend-svc, port: {number: 80}}Helm chart per il packaging delle applicazioni
Helm è il package manager di Kubernetes. Un chart raggruppa tutti i manifest Kubernetes di un'applicazione (Deployment, Services, Ingress, ConfigMap) in un unico pacchetto versionato e parametrizzabile. helm install distribuisce un chart con valori specifici per l'ambiente. Il repository Helm su Artifact Hub ospita migliaia di chart preconfigurati per infrastrutture comuni (NGINX, cert-manager, Prometheus, Redis).
# Add the NGINX Ingress Controller chart repo
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
# Install NGINX Ingress Controller
helm install ingress-nginx ingress-nginx/ingress-nginx \
--namespace ingress-nginx \
--create-namespace \
--set controller.replicaCount=2
# Install your own app chart with custom values
helm install myapp ./charts/myapp -f values-prod.yamlAggiornamenti progressivi e rollback
Aggiorni un Deployment modificando il tag dell'immagine del container: Kubernetes esegue un aggiornamento progressivo, creando nuovi pod con l'immagine aggiornata e terminando gradualmente quelli vecchi, mantenendo l'applicazione disponibile durante l'intero processo. Se la nuova versione presenta problemi, torni immediatamente alla revisione precedente usando kubectl rollout undo. Kubernetes conserva una cronologia configurabile delle revisioni per ogni Deployment.
# Update the image to a new version
kubectl set image deployment/myapp \
myapp=mycontainerregistry.azurecr.io/myapp:v2.0
# Watch the rollout progress
kubectl rollout status deployment/myapp
# View rollout history
kubectl rollout history deployment/myapp
# Rollback to the previous version
kubectl rollout undo deployment/myapp
# Rollback to a specific revision
kubectl rollout undo deployment/myapp --to-revision=2Cluster Autoscaler
Cluster Autoscaler aggiunge o rimuove automaticamente i nodi worker da un pool di nodi AKS in base ai pod in attesa di essere pianificati e all'utilizzo dei nodi. Quando i pod non possono essere pianificati perché tutti i nodi sono pieni, Cluster Autoscaler crea nuovi nodi. Quando i nodi sono sottoutilizzati e i pod possono essere consolidati, li svuota e li rimuove. Questo completa il funzionamento di Horizontal Pod Autoscaler: HPA ridimensiona i pod, mentre Cluster Autoscaler ridimensiona i nodi.
# Enable Cluster Autoscaler on the default node pool
az aks update \
--name myAKSCluster \
--resource-group MyRG \
--enable-cluster-autoscaler \
--min-count 2 \
--max-count 10
# Update autoscaler bounds on a specific node pool
az aks nodepool update \
--cluster-name myAKSCluster \
--resource-group MyRG \
--name nodepool1 \
--enable-cluster-autoscaler \
--min-count 3 \
--max-count 20Monitoraggio di AKS con Azure Monitor
Abiliti Azure Monitor Container Insights per raccogliere log e metriche dal cluster AKS senza distribuire strumenti di monitoraggio di terze parti. Container Insights offre dashboard preconfigurate per l'integrità del cluster, l'utilizzo di CPU e memoria di nodi e pod, i log dei container e lo streaming in tempo reale dei pod. Si integra con Prometheus per la raccolta di metriche personalizzate e consente di interrogare tutti i dati tramite KQL in Log Analytics.
# Enable Azure Monitor Container Insights on AKS
az aks enable-addons \
--addons monitoring \
--name myAKSCluster \
--resource-group MyRG \
--workspace-resource-id /subscriptions/.../workspaces/MyLogAnalytics
# Stream live logs from a running pod
kubectl logs -f deployment/myapp -c myapp
# Query pod resource usage
kubectl top pods --namespace defaultRBAC di AKS e Azure Active Directory
Integri AKS con Microsoft Entra ID per utilizzare utenti e gruppi di Azure AD con il controllo degli accessi basato sui ruoli (RBAC) di Kubernetes. Anziché gestire account utente Kubernetes separati, assegni ClusterRole o associazioni di Role agli ID oggetto di Entra ID. Quando uno sviluppatore esegue kubectl, AKS convalida il relativo token Entra ID. In questo modo si ottiene una gestione centralizzata delle identità, integrata con i criteri di accesso condizionale e MFA.
# Enable Entra ID RBAC on an AKS cluster
az aks update \
--name myAKSCluster \
--resource-group MyRG \
--enable-azure-rbac
# Assign a built-in AKS role to an Entra group
az role assignment create \
--role 'Azure Kubernetes Service RBAC Reader' \
--assignee '<Entra-Group-Object-ID>' \
--scope /subscriptions/.../resourceGroups/MyRG/providers/Microsoft.ContainerService/managedClusters/myAKSClusterCriteri di rete per la sicurezza a livello di pod
I criteri di rete sono risorse Kubernetes che controllano quali pod possono comunicare tra loro. Per impostazione predefinita, tutti i pod di un cluster possono raggiungere tutti gli altri pod: i criteri di rete forniscono un firewall a livello di pod. In AKS, abiliti Azure network policy o Calico per applicare i criteri. Un modello comune consiste in un criterio default-deny che blocca tutto il traffico tra pod, seguito da criteri di autorizzazione espliciti per i percorsi specifici necessari all'applicazione.
# Default deny all ingress to pods in namespace
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-ingress
namespace: production
spec:
podSelector: {} # Matches all pods
policyTypes:
- Ingress
# Allow API pods to receive from frontend pods only
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: api-allow-frontend
spec:
podSelector: {matchLabels: {app: api}}
ingress:
- from:
- podSelector: {matchLabels: {app: frontend}}Verifica rapida
Verifichi la Sua comprensione dei concetti di Microsoft Azure Fundamentals (AZ-900) trattati in questa lezione.
Riepilogo della lezione
In questa lezione ha imparato che: AKS è un servizio Kubernetes gestito in cui Microsoft gestisce il control plane; i chart Helm raggruppano applicazioni Kubernetes composte da più risorse per consentirne una distribuzione ripetibile; Cluster Autoscaler aggiunge e rimuove dinamicamente i nodi in base alla domanda di pianificazione dei pod. Ora esamineremo i trigger e le associazioni di Azure Functions.
Domande Frequenti
La lezione «Distribuzione di carichi di lavoro su AKS» è gratuita?
Sì — il testo completo di «Distribuzione di carichi di lavoro su AKS» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cloud & IT Cert Prep, passa a CoddyKit PRO. Il corso Cloud & IT Cert Prep include 4 lezioni in totale.
Cosa imparerò in «Distribuzione di carichi di lavoro su AKS»?
Crei un cluster AKS, distribuisca un'applicazione multi-container usando kubectl e i chart Helm e la renda accessibile dall'esterno con un servizio Azure Load Balancer. Eserciti Cloud & IT Cert Prep con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cloud & IT Cert Prep?
Non è richiesta alcuna esperienza precedente. Cloud & IT Cert Prep su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Distribuzione di carichi di lavoro su AKS»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cloud & IT Cert Prep?
Sì. Ogni lezione Cloud & IT Cert Prep include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Azure Container Registry
- Azure Container Instances
- Concetti Kubernetes per Azure
- Distribuzione di carichi di lavoro su AKS