Distribuire applicazioni Windows
Si applica a: Servizio Azure Kubernetes in Azure Stack HCI 22H2, servizio Azure Kubernetes in Windows Server
Questa esercitazione descrive come distribuire un'applicazione di esempio ASP.NET in un contenitore di Windows Server nel cluster servizio Azure Kubernetes (servizio Azure Kubernetes) nel servizio Azure Kubernetes abilitato da Arc, quindi testare e ridimensionare l'applicazione. Si apprenderà anche come aggiungere un nodo Windows a un dominio di Active Directory.
Questa esercitazione presuppone una conoscenza di base dei concetti di Kubernetes. Per altre informazioni, vedere Concetti di base di Kubernetes per il servizio Azure Kubernetes abilitato da Azure Arc.
Operazioni preliminari
Assicurarsi di soddisfare i requisiti seguenti:
- Un cluster servizio Azure Kubernetes con almeno un nodo di lavoro Windows in esecuzione.
- Un file kubeconfig per accedere al cluster.
- Viene installato il modulo Azure KubernetesHci di PowerShell.
Quando si seguono le procedure:
- Eseguire i comandi in una finestra di amministrazione di PowerShell.
- Assicurarsi che i carichi di lavoro specifici del sistema operativo si adattino all'host contenitore appropriato. Se il cluster Kubernetes ha una combinazione di nodi di lavoro Linux e Windows, è possibile usare selettori di nodo o taints e tolleranze. Per altre informazioni, vedere Uso di selettori di nodo e taints e tolleranze.
Distribuire l'applicazione
Un file manifesto Kubernetes definisce uno stato desiderato per il cluster, ad esempio le immagini del contenitore da eseguire. In queste procedure viene usato un manifesto per creare tutti gli oggetti necessari per eseguire l'applicazione di esempio ASP.NET in un contenitore di Windows Server. Questo manifesto include una distribuzione di Kubernetes per l'applicazione di esempio ASP.NET e un servizio Kubernetes esterno per accedere all'applicazione da Internet.
L'applicazione di esempio ASP.NET viene fornita come parte degli esempi di .NET Framework e viene eseguita in un contenitore di Windows Server. Azure Kubernetes Arc richiede che i contenitori di Windows Server siano basati su immagini di Windows Server 2019.
Il file manifesto kubernetes deve anche definire un selettore di nodo per indicare al cluster di eseguire il pod dell'applicazione di esempio ASP.NET in un nodo in cui è possibile eseguire contenitori di Windows Server.
Creare un file denominato sample.yaml
e copiare/incollare la definizione YAML seguente:
apiVersion: apps/v1
kind: Deployment
metadata:
name: sample
labels:
app: sample
spec:
replicas: 1
template:
metadata:
name: sample
labels:
app: sample
spec:
nodeSelector:
"beta.kubernetes.io/os": windows
containers:
- name: sample
image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp
resources:
limits:
cpu: 1
memory: 800M
requests:
cpu: .1
memory: 300M
ports:
- containerPort: 80
selector:
matchLabels:
app: sample
---
apiVersion: v1
kind: Service
metadata:
name: sample
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 80
selector:
app: sample
Distribuire l'applicazione usando il kubectl apply
comando e specificare il nome del manifesto YAML:
kubectl apply -f sample.yaml
L'output di esempio seguente mostra che la distribuzione e il servizio sono stati creati correttamente:
deployment.apps/sample created
service/sample created
Testare l'applicazione
Quando l'applicazione viene eseguita, un servizio Kubernetes espone il front-end dell'applicazione a Internet. Questo processo può richiedere alcuni minuti. Occasionalmente, il provisioning del servizio può richiedere più tempo. In questi casi, attendere al massimo 10 minuti.
Per monitorare lo stato di avanzamento, usare il kubectl get service
comando con l'argomento --watch
:
kubectl get service sample --watch
Inizialmente, l'indirizzo EXTERNAL-IP per il servizio di esempio viene visualizzato come in sospeso:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
sample LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 6s
Quando EXTERNAL-IP passa da pending a un effettivo indirizzo IP pubblico, usare CTRL-C
per arrestare il processo di controllo kubectl
. L'output di esempio seguente mostra un indirizzo IP pubblico valido assegnato al servizio:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
Per vedere in azione l'app di esempio, aprire un Web browser all'indirizzo IP esterno del servizio.
Se si verifica il timeout della connessione quando si tenta di caricare la pagina, verificare se l'app di esempio è pronta eseguendo il kubectl get pods --watch
comando . In alcuni casi, l'indirizzo IP esterno è disponibile prima dell'avvio del contenitore di Windows.
Ridimensionare i pod dell'applicazione
È stata creata una singola replica del front-end dell'applicazione. Per visualizzare il numero e lo stato dei pod nel cluster, usare il kubectl get
comando come indicato di seguito:
kubectl get pods -n default
Per modificare il numero di pod nella distribuzione di esempio , usare il kubectl scale
comando . L'esempio seguente aumenta il numero di pod front-end a 3:
kubectl scale --replicas=3 deployment/sample
Eseguire kubectl get pods
di nuovo per verificare che i pod siano stati creati. Dopo circa un minuto i pod aggiuntivi sono disponibili nel cluster:
kubectl get pods -n default