Självstudie: Distribuera en Linux-app
Gäller för: AKS på Azure Stack HCI 22H2, AKS på Windows Server
Den här självstudien beskriver hur du distribuerar en app med flera containrar som innehåller en webbklientdel och en Redis-databasinstans i ditt Kubernetes-kluster i AKS som aktiveras av Azure Arc. Du lär dig också att testa och skala din app.
Den här självstudien förutsätter en grundläggande förståelse av Kubernetes-begrepp. Mer information finns i Kubernetes grundläggande begrepp.
Innan du börjar
Kontrollera att följande krav är klara:
- Ett AKS-kluster med minst en Linux-arbetsnod som är igång.
- En kubeconfig-fil för åtkomst till klustret.
- AksHci PowerShell-modulen är installerad. Mer information finns i Install-AksHci.
När du gör självstudierna:
- Kör kommandona i ett PowerShell-fönster som öppnas med administratörsbehörighet.
- Se till att OS-specifika arbetsbelastningar hamnar på lämplig containervärd. Om Kubernetes-klustret har en blandning av Linux- och Windows-arbetsnoder kan du antingen använda nodväljare eller taints och toleranser. Mer information finns i använda nodväljare och taints och toleranser.
Anteckning
Distribution av ett målkluster som delar ett nätverk med ett annat målkluster kan leda till lastbalanserarens IP-adresskonflikter.
IP-adresskonflikter kan inträffa om du distribuerar två arbetsbelastningar som använder olika portar i målkluster som delar samma AksHciClusterNetwork
objekt. På grund av hur IP-adresser och portmappningar allokeras i HA-proxyn kan det leda till tilldelning av dubblett-IP-adresser. Om detta inträffar kan en eller båda arbetsbelastningarna stöta på problem med slumpmässig nätverksanslutning tills du distribuerar om dina arbetsbelastningar. När du distribuerar om dina arbetsbelastningar kan du antingen använda samma port, som tilldelar en tjänst-IP-adress till varje arbetsbelastning, eller så kan du distribuera om dina arbetsbelastningar i målkluster som använder olika AksHciClusterNetwork
objekt.
Distribuera appen
En Kubernetes-manifestfil definierar ett önskat tillstånd för klustret, till exempel vilka containeravbildningar som ska köras. Den här självstudien använder ett manifest för att skapa alla objekt som behövs för att köra Azure-röstappen. Det här manifestet innehåller två Kubernetes-distributioner: en för Azure Vote Python-exempelapparna och den andra för en Redis-instans. Två Kubernetes-tjänster skapas också: en intern tjänst för Redis-instansen och en extern tjänst för åtkomst till Azure Vote-appen från Internet.
Skapa en fil med namnet azure-vote.yaml och kopiera/klistra in följande YAML-definition:
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
Distribuera appen med kubectl apply
kommandot och ange namnet på ditt YAML-manifest:
kubectl apply -f azure-vote.yaml
Följande exempelutdata visar distributioner och tjänster som har skapats:
deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created
Testa appen
När appen körs exponerar en Kubernetes-tjänst appens klientdel för Internet. Den här processen kan ta ett par minuter att slutföra.
Om du vill övervaka förloppet använder du kubectl get service
kommandot med --watch
argumentet :
kubectl get service azure-vote-front --watch
Inledningsvis visas EXTERNAL-IP för tjänsten azure-vote-front som väntande:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.37.27 <pending> 80:30572/TCP 22m
När EXTERNAL-IP-adressen ändras från väntande till en faktisk offentlig IP-adress använder du CTRL-C för att stoppa kubectl
watch processen. Följande exempelutdata visar en giltig offentlig IP-adress som har tilldelats tjänsten:
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
Om du vill se hur Azure Vote-appen fungerar i praktiken så öppnar du en webbläsare till den externa IP-adressen för din tjänst.
Skala programpoddar
Vi skapade en enda replik av Azure Voting App-klientdelen och Redis-instansen. Om du vill se antalet och tillståndet för poddar i klustret använder du kubectl get
kommandot:
kubectl get pods -n default
Följande exempelutdata visar en frontend-pod och en backend-pod:
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
Om du vill ändra antalet poddar i distributionen azure-vote-front använder du kubectl scale
kommandot . I följande exempel ökas antalet frontend-poddar till 5:
kubectl scale --replicas=5 deployment/azure-vote-front
Kör kubectl get pods
igen för att kontrollera att ytterligare poddar har skapats. Efter någon minut finns de nya poddarna i klustret:
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
Nästa steg
Använda Azure Monitor för att övervaka klustret och programmet
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för