Delen via


Een Linux-app implementeren

Van toepassing op: AKS op Azure Stack HCI 22H2, AKS op Windows Server

In deze handleiding wordt beschreven hoe u een app met meerdere containers implementeert die een web-front-end en een Redis-database-exemplaar bevat in uw Kubernetes-cluster in AKS waarvoor Azure Arc is ingeschakeld. U leert ook hoe u uw app kunt testen en schalen.

In deze handleiding wordt ervan uitgegaan dat u basiskennis hebt van Kubernetes-concepten. Zie Kubernetes-kernconcepten voor meer informatie.

Voordat u begint

Controleer of u over de volgende vereisten beschikt:

  • Een AKS-cluster met ten minste één Linux-werkknooppunt dat actief is.
  • Een kubeconfig-bestand voor toegang tot het cluster.
  • De AksHci PowerShell-module is geïnstalleerd. Zie Install-AksHci voor meer informatie.

Wanneer u de procedures uitvoert:

  • Voer de opdrachten uit in een PowerShell-venster dat is geopend met beheerdersbevoegdheden.
  • Zorg ervoor dat besturingssysteemspecifieke workloads op de juiste containerhost terechtkomen. Als uw Kubernetes-cluster een combinatie van Linux- en Windows-werkknooppunten heeft, kunt u knooppuntkiezers of taints en toleranties gebruiken. Zie het gebruik van knooppuntkiezers en taints en toleranties voor meer informatie.

Notitie

Als u een doelcluster implementeert dat een netwerk deelt met een ander doelcluster, kan dit leiden tot conflicten met het IP-adres van de load balancer. Ip-adresconflicten kunnen optreden als u twee workloads implementeert die gebruikmaken van verschillende poorten in doelclusters die hetzelfde AksHciClusterNetwork object delen. Vanwege de manier waarop de IP-adressen en poorttoewijzingen worden toegewezen in ha-proxy, kan dit leiden tot het toewijzen van dubbele IP-adressen. Als dit gebeurt, kunnen een of beide workloads willekeurige netwerkverbindingsproblemen ondervinden totdat u uw workloads opnieuw implementeert. Wanneer u uw workloads opnieuw implementeert, kunt u dezelfde poort gebruiken, die een SERVICE-IP-adres aan elke workload toewijst, of u kunt uw workloads opnieuw implementeren op doelclusters die verschillende AksHciClusterNetwork objecten gebruiken.

De app implementeren

Een Kubernetes-manifestbestand definieert een gewenste status voor het cluster, zoals welke containerinstallatiekopieën moeten worden uitgevoerd. In deze zelfstudie wordt een manifest gebruikt om alle objecten te maken die nodig zijn om de Azure Vote-app uit te voeren. Dit manifest bevat twee Kubernetes-implementaties: een voor de Azure Vote Python-voorbeeld-apps en de andere voor een Redis-exemplaar. Er worden ook twee Kubernetes-services gemaakt: een interne service voor het Redis-exemplaar en een externe service voor toegang tot de Azure Vote-app vanaf internet.

Maak een bestand met de naam azure-vote.yaml en kopieer/plak de volgende YAML-definitie:

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

Implementeer de app met behulp van de kubectl apply opdracht en geef de naam van uw YAML-manifest op:

kubectl apply -f azure-vote.yaml

In de volgende voorbeelduitvoer ziet u implementaties en services die zijn gemaakt:

deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created

De app testen

Wanneer de app wordt uitgevoerd, maakt een Kubernetes-service de front-end van de app beschikbaar op internet. Dit proces kan enkele minuten duren.

Als u de voortgang wilt controleren, gebruikt u de kubectl get service opdracht met het --watch argument:

kubectl get service azure-vote-front --watch

In eerste instantie wordt het EXTERNAL-IP voor de azure-vote-front-service weergegeven als in behandeling:

NAME               TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
azure-vote-front   LoadBalancer   10.0.37.27      <pending>     80:30572/TCP   22m

Wanneer het EXTERNAL-IP-adres in behandeling is voor een echt openbaar IP-adres, gebruikt u Ctrl-C om het kubectl controleproces te stoppen. In de volgende voorbeelduitvoer ziet u een geldig openbaar IP-adres dat aan de service is toegewezen:

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

Open een webbrowser naar het externe IP-adres van uw service om de Azure Vote-app te zien.

Schermopname van de startpagina van de Azure Voting App-toepassing, geïmplementeerd op een Kubernetes-cluster in Azure.

Toepassingspods schalen

We hebben één replica gemaakt van de front-end van de Azure Voting App en het Redis-exemplaar. Als u het aantal en de status van pods in uw cluster wilt zien, gebruikt u de kubectl get opdracht:

kubectl get pods -n default

In het volgende voorbeeld van uitvoer ziet u één pod voor de front-end en één voor de back-end:

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

Gebruik de kubectl scale opdracht om het aantal pods in de implementatie van azure-vote-front te wijzigen. In het volgende voorbeeld wordt het aantal pods voor de front-end verhoogd naar 5:

kubectl scale --replicas=5 deployment/azure-vote-front

Voer opnieuw uit kubectl get pods om te controleren of er extra pods zijn gemaakt. Na ongeveer een minuut zijn de extra pods beschikbaar in uw cluster:

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

Volgende stappen

Azure Monitor gebruiken om uw cluster en toepassing te bewaken