Självstudie: Distribuera en Linux-app i Azure Kubernetes Service på Azure Stack HCI och Windows Server

Gäller för: AKS på Azure Stack HCI och 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 AKS på Azure Stack HCI- och Windows Server-kluster. Du får också lära dig hur du testar och skalar din app.

Den här självstudien förutsätter grundläggande kunskaper om Kubernetes-begrepp. Mer information finns i Viktiga Kubernetes-begrepp för Azure Kubernetes Service i Azure Stack HCI.

Innan du börjar

Kontrollera att du har följande krav klara:

  • Ett Azure Kubernetes Service (AKS) i Azure Stack HCI- och Windows Server-kluster med minst en Linux-arbetsnod som är igång.
  • En kubeconfig-fil för att komma åt klustret.
  • Ha Azure Kubernetes Service på Azure Stack HCI PowerShell-modulen installerad.
  • Kör kommandona i det här dokumentet i ett administrativt PowerShell-fönster.
  • Se till att OS-specifika arbetsbelastningar hamnar på rätt containervärd. Om du har ett blandat Kubernetes-kluster för 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

När du distribuerar ett målkluster som delar ett nätverk med ett annat målkluster finns det risk för en konflikt med lastbalanserarens IP-adress. Detta 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 Proxy kan detta leda till en duplicerad IP-adresstilldelning. Om detta inträffar stöter en eller båda arbetsbelastningarna på slumpmässiga problem med nätverksanslutningen tills du distribuerar om dina arbetsbelastningar. När du distribuerar om dina arbetsbelastningar kan du antingen använda samma port som gör att varje arbetsbelastning får en separat tjänst-IP-adress, 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. I den här snabbstarten används ett manifest för att skapa alla objekt som behövs för att köra Azure Vote-appen. Det här manifestet innehåller två Kubernetes-distributioner – en för Azure Vote-exempelapparna Python 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 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 kommandot kubectl apply och ange namnet på yaml-manifestet:

kubectl apply -f azure-vote.yaml

Följande exempelutdata visar de distributioner och tjänster som 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

Till en början visas EXTERNAL-IP för azure-vote-front-tjänsten 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-övervakningsprocessen. 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.

Bild av Kubernetes-kluster i Azure

Skala programpoddar

Vi har skapat en enda replik av Azure Vote-klientdelen och Redis-instansen. Om du vill se antalet poddar och status 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