Esercitazione: Distribuire un'app Linux
Si applica a: Servizio Azure Kubernetes in Azure Stack HCI 22H2, servizio Azure Kubernetes in Windows Server
Questa esercitazione descrive come distribuire un'app multi-contenitore che include un front-end Web e un'istanza di database Redis nel cluster Kubernetes abilitato da Azure Arc. Si apprenderà anche come testare e ridimensionare l'app.
Questa esercitazione presuppone una conoscenza di base dei concetti di Kubernetes. Per altre informazioni, vedere Concetti di base di Kubernetes.
Prima di iniziare
Verificare che siano pronti i requisiti seguenti:
- Un cluster del servizio Azure Kubernetes con almeno un nodo di lavoro Linux in esecuzione e in esecuzione.
- File kubeconfig per accedere al cluster.
- Il modulo AksHci PowerShell è installato. Per altre informazioni, vedere Install-AksHci.
Quando si esegue le procedure di esercitazione:
- Eseguire i comandi in una finestra di PowerShell aperta con privilegi amministrativi.
- Assicurarsi che i carichi di lavoro specifici del sistema operativo vengano terreni nell'host contenitore appropriato. Se il cluster Kubernetes include una combinazione di nodi di lavoro Linux e Windows, è possibile usare i selettore di nodi o le taints e le tolerazioni. Per altre informazioni, vedere uso di selettore di nodi e taints e tolerations.
Nota
La distribuzione di un cluster di destinazione che condivide una rete con un altro cluster di destinazione può causare conflitti di indirizzi IP del servizio di bilanciamento del carico.
I conflitti di indirizzi IP possono verificarsi se si distribuiscono due carichi di lavoro che usano porte diverse nei cluster di destinazione che condividono lo stesso AksHciClusterNetwork
oggetto. A causa del modo in cui gli indirizzi IP e i mapping delle porte vengono allocati all'interno del proxy HA, può causare l'assegnazione di indirizzi IP duplicati. In questo caso, uno o entrambi i carichi di lavoro possono riscontrare problemi di connettività di rete casuali finché non si distribuiscono nuovamente i carichi di lavoro. Quando si distribuiscono nuovamente i carichi di lavoro, è possibile usare la stessa porta, che assegna un indirizzo IP del servizio a ogni carico di lavoro oppure è possibile distribuire nuovamente i carichi di lavoro nei cluster di destinazione che usano oggetti diversi AksHciClusterNetwork
.
Distribuire l'app
Un file manifesto Kubernetes definisce uno stato desiderato per il cluster, ad esempio le immagini del contenitore da eseguire. Questa esercitazione usa un manifesto per creare tutti gli oggetti necessari per eseguire l'app di voto di Azure. Questo manifesto include due distribuzioni di Kubernetes: una per le app Python di voto di Azure di esempio e l'altra per un'istanza Redis. Vengono creati anche due servizi Kubernetes: un servizio interno per l'istanza Redis e un servizio esterno per accedere all'app Azure Vote da Internet.
Create un file denominato azure-vote.yaml e copiare/incollare la definizione YAML seguente:
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-back
spec:
replicas: 1
selector:
matchLabels:
app: azure-vote-back
template:
metadata:
labels:
app: azure-vote-back
spec:
nodeSelector:
"beta.kubernetes.io/os": linux
containers:
- name: azure-vote-back
image: redis
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 6379
name: redis
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-back
spec:
ports:
- port: 6379
selector:
app: azure-vote-back
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: azure-vote-front
spec:
replicas: 1
selector:
matchLabels:
app: azure-vote-front
template:
metadata:
labels:
app: azure-vote-front
spec:
nodeSelector:
"beta.kubernetes.io/os": linux
containers:
- name: azure-vote-front
image: mcr.microsoft.com/azuredocs/azure-vote-front:v1
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
ports:
- containerPort: 80
env:
- name: REDIS
value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-front
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: azure-vote-front
Distribuire l'app usando il kubectl apply
comando e specificare il nome del manifesto YAML:
kubectl apply -f azure-vote.yaml
L'output di esempio seguente mostra le distribuzioni e i servizi creati correttamente:
deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created
Testare l'app
Quando l'app viene eseguita, un servizio Kubernetes espone l'app front-end a Internet. Il processo potrebbe richiedere alcuni minuti.
Per monitorare lo stato di avanzamento, usare il comando con l'argomento kubectl get service
--watch
:
kubectl get service azure-vote-front --watch
Inizialmente, l'indirizzo EXTERNAL-IP per il servizio azure-vote-front viene visualizzato come in sospeso:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 22m
Quando l'indirizzo EXTERNAL-IP cambia da in sospeso a un indirizzo IP pubblico effettivo, usare CTRL-C per arrestare il kubectl
processo di watch. L'output di esempio seguente mostra un indirizzo IP pubblico valido assegnato al servizio:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 24m
Per vedere in azione l'app Azure Vote, aprire un Web browser all'indirizzo IP esterno del servizio.
Ridimensionare i pod dell'applicazione
È stata creata una singola replica dell'istanza front-end dell'app di voto di Azure e Redis. Per visualizzare il numero e lo stato dei pod nel cluster, usare il kubectl get
comando:
kubectl get pods -n default
L'output di esempio seguente illustra un pod front-end e un pod back-end:
NAME READY STATUS RESTARTS AGE
azure-vote-back-6bdcb87f89-g2pqg 1/1 Running 0 25m
azure-vote-front-84c8bf64fc-cdq86 1/1 Running 0 25m
Per modificare il numero di pod nella distribuzione azure-vote-front , usare il kubectl scale
comando . L'esempio seguente aumenta il numero di pod front-end a 5:
kubectl scale --replicas=5 deployment/azure-vote-front
Eseguire kubectl get pods
di nuovo per verificare che siano stati creati altri pod. Dopo circa un minuto i pod aggiuntivi sono disponibili nel cluster:
kubectl get pods -n default
Name READY STATUS RESTARTS AGE
azure-vote-back-6bdcb87f89-g2pqg 1/1 Running 0 31m
azure-vote-front-84c8bf64fc-cdq86 1/1 Running 0 31m
azure-vote-front-84c8bf64fc-56h64 1/1 Running 0 80s
azure-vote-front-84c8bf64fc-djkp8 1/1 Running 0 80s
azure-vote-front-84c8bf64fc-jmmvs 1/1 Running 0 80s
azure-vote-front-84c8bf64fc-znc6z 1/1 Running 0 80s
Passaggi successivi
Usare Monitoraggio di Azure per monitorare il cluster e l'applicazione
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per