Share via


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.

Skärmbild av startsidan för Azure Voting App-programmet som distribueras i ett Kubernetes-kluster i Azure.

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