Distribuera en Linux-app
Gäller för: AKS på Azure Stack HCI 22H2, AKS på Windows Server
Den här guiden 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 guiden 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 du har följande förutsättningar:
- 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 utför procedurerna:
- 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.
Kommentar
Om du distribuerar ett målkluster som delar ett nätverk med ett annat målkluster kan det leda till ip-adresskonflikter för lastbalanseraren.
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 på 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. I den här självstudien används 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-exempelappar 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: <path to image>/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 kommandot kubectl apply
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 till 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
Initialt 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 DEN EXTERNA IP-adressen ändras från väntande till en faktisk offentlig IP-adress använder du CTRL-C för att stoppa kubectl
klockprocessen. 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 statusen 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 ditt kluster och program