Esercizio - Distribuire un'applicazione Linux e Windows di esempio nel cluster AKS Edge Essentials

Completato

In questo esercizio viene distribuita un'applicazione Linux e Windows in contenitori nel cluster AKS Edge Essentials.

Verificare la distribuzione di AKS Edge Essentials

Nota

I comandi seguenti vengono eseguiti nella riga di comando di PowerShell della macchina virtuale.

  1. Verificare che la distribuzione sia riuscita eseguendo il comando seguente:

    kubectl get nodes -o wide
    kubectl get pods -A -o wide
    

    Lo screenshot di esempio seguente mostra che i nodi Linux e Windows sono pronti e che i pod sono in esecuzione:

    Screenshot of Windows VM with PowerShell commands output demonstrating a successful deployment of AKS Edge Essentials.

Distribuire un'applicazione Linux

Distribuire un'applicazione di esempio, una semplice app di voto, costituita da un front-end e un back-end, basata sull'immagine azure-vote-front di Microsoft. L'immagine del contenitore per questa applicazione è ospitata in Registro Azure Container. Vedere linux-sample.yaml nel pacchetto del repository GitHub per il manifesto della distribuzione. In YAML, è stato specificato un tag nodeSelector come linux.

  1. Per distribuire l'applicazione, usare il comando kubectl apply. Questo comando analizza il file manifesto e crea gli oggetti Kubernetes definiti. Specificare il file manifesto YAML, come illustrato nell'esempio seguente:

    kubectl apply -f  https://raw.githubusercontent.com/Azure/AKS-Edge/main/samples/others/linux-sample.yaml
    
  2. Attendere alcuni minuti che i pod siano nello stato di esecuzione:

    kubectl get pods -o wide
    

    L'output di esempio seguente mostra che i pod dell'applicazione sono in esecuzione:

    PS C:\Users\azureuser> kubectl get pods -o wide
    NAME                                READY   STATUS    RESTARTS   AGE   IP          NODE         NOMINATED NODE   READINESS GATES
    azure-vote-back-66c88ccc8-fjwfq     1/1     Running   0          46s   10.42.0.6   myvm-ledge   <none>           <none>
    azure-vote-front-85dc674b97-xp8d8   1/1     Running   0          46s   10.42.0.7   myvm-ledge   <none>           <none>
    
  3. Per monitorare lo stato di avanzamento, usare il comando kubectl get services con il parametro --watch:

    kubectl get services --watch
    

    Inizialmente, l'oggetto EXTERNAL-IP per il servizio azure-vote-front viene visualizzato come pending. Quando l'indirizzo EXTERNAL-IP passa da pending a un indirizzo IP pubblico effettivo, è possibile usare l'indirizzo IP assegnato al servizio.

    PS C:\Users\azureuser> kubectl get services --watch
    NAME               TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
    azure-vote-back    ClusterIP      10.43.208.68   <none>        6379/TCP       4m52s
    azure-vote-front   LoadBalancer   10.43.125.83   192.168.0.4   80:31032/TCP   4m52s
    kubernetes         ClusterIP      10.43.0.1      <none>        443/TCP        16m
    

    Premere CTRL+C per smettere di guardare.

  4. Per visualizzare l'applicazione, aprire un browser e passare all'indirizzo IP e alla porta assegnati al servizio azure-vote-front. Nell'esempio precedente, l'indirizzo IP e la porta assegnati al servizio sono 192.168.0.4:31032.

    Screenshot of Windows VM with linux sample application running in the browser.

Distribuire un'applicazione Windows

Distribuire un'applicazione di esempio ASP.NET Core in base all'immagine di esempio di Microsoft. Vedere win-sample-aspnetcore.yaml nel pacchetto del repository GitHub per il manifesto della distribuzione. In YAML è stato specificato un tag nodeSelector come finestre.

  1. Usare il comando kubectl apply per distribuire l'applicazione:

    kubectl apply -f https://raw.githubusercontent.com/Azure/AKS-Edge/main/samples/others/win-sample-aspnetcore.yaml
    
  2. Attendere alcuni minuti che il pod sia nello stato di esecuzione:

    kubectl get pods -o wide
    

    L'output di esempio seguente mostra che il pod dell'applicazione sample-aspnetcore-786fb44bb-k449c è in esecuzione:

    PS C:\Users\azureuser> kubectl get pods -o wide
    NAME                                READY   STATUS    RESTARTS   AGE     IP          NODE         NOMINATED NODE   READINESS GATES
    azure-vote-back-66c88ccc8-fjwfq     1/1     Running   0          8m      10.42.0.6   myvm-ledge   <none>           <none>
    azure-vote-front-85dc674b97-xp8d8   1/1     Running   0          8m      10.42.0.7   myvm-ledge   <none>           <none>
    sample-aspnetcore-786fb44bb-k449c   1/1     Running   0          2m56s   10.42.1.3   myvm-wedge   <none>           <none>
    
  3. Verificare che il servizio di esempio sia in esecuzione:

    kubectl get services
    

    Prendere quindi nota di PORT per il servizio sample-aspnetcore. In questo esempio, è 31767.

    PS C:\Users\azureuser> kubectl get services
    NAME               TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)         AGE
    azure-vote-back    ClusterIP      10.43.208.68   <none>        6379/TCP        10m52s
    azure-vote-front   LoadBalancer   10.43.125.83   192.168.0.4   80:31032/TCP    10m52s
    kubernetes         ClusterIP      10.43.0.1      <none>        443/TCP         26m
    sample-aspnetcore  NodePort       10.43.237.30   <none>        8080:31767/TCP  6m40s
    
  4. Recuperare l'indirizzo IP del nodo Kubernetes in cui è in esecuzione l'applicazione per aggiungere la porta di NodePort:

    Get-AksEdgeNodeAddr -NodeType Windows
    
    PS C:\Users\azureuser> Get-AksEdgeNodeAddr -NodeType Windows
    
    [01/16/2024 14:44:22] Querying IP and MAC addresses from virtual machine (myvm-wedge)
    
     - Virtual machine MAC: 00:15:5d:02:7c:eb
     - Virtual machine IP : 192.168.0.3 retrieved directly from virtual machine
    
    Name                           Value
    ----                           -----
    IpAddress                      192.168.0.3
    MacAddress                     00:15:5d:02:7c:eb
    
  5. Per visualizzare l'applicazione, aprire un browser e passare all'indirizzo IP e alla porta assegnati al servizio sample-aspnetcore. Nell'esempio precedente l'indirizzo IP e la porta assegnati al servizio sono 192.168.0.3:31767.

    Screenshot of Windows VM with windows sample application running in the browser.