Esercizio - Distribuire il cluster K3S del servizio Azure Kubernetes Edge Essentials

Completato

In questo esercizio, si distribuisce AKS Edge Essentials in un singolo cluster K3S del computer con un nodo Linux e Windows. Azure Cloud Shell viene usato per creare una macchina virtuale (VM) di Azure con Windows 11 Enterprise ed eseguire uno script di PowerShell per semplificare la distribuzione di AKS Edge Essentials.

Creare una macchina virtuale di Azure con Windows 11 Enterprise

Ecco come creare la macchina virtuale di Azure con Windows 11 Enterprise usando Azure Cloud Shell.

  1. Per iniziare, attivare la sandbox di Azure.

  2. Eseguire il comando seguente in Azure Cloud Shell per impostare le variabili per la creazione della macchina virtuale di Azure:

    resourcegroup="<rgn>[resource group name]</rgn>"
    vmname="myVM"
    username="azureuser"
    let "randomIdentifier=$RANDOM*$RANDOM"
    adminpassword="Admin-$randomIdentifier-Password!"
    
    echo Admin Password: $adminpassword
    

    Nota

    Prendere nota di Admin Password. Sarà necessario più avanti.

  3. Creare la macchina virtuale di Azure con Windows 11 Enterprise usando il comando az vm create:

    az vm create \
        --resource-group $resourcegroup \
        --name $vmname \
        --image MicrosoftVisualStudio:windowsplustools:base-win11-gen2:latest \
        --public-ip-sku Standard \
        --admin-username $username \
        --admin-password $adminpassword \
        --size Standard_D2s_v5 \
        --security-type TrustedLaunch
    

    La creazione della macchina virtuale e delle risorse di supporto richiede alcuni minuti. L'output di esempio seguente mostra che l'operazione di creazione della macchina virtuale ha avuto esito positivo.

    {
        "fqdns": "",
        "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-rg-0000/providers/Microsoft.Compute/virtualMachines/myVM",
        "location": "westus3",
        "macAddress": "00-00-00-00-00-00",
        "powerState": "VM running",
        "privateIpAddress": "10.0.0.4",
        "publicIpAddress": "00.000.000.000",
        "resourceGroup": "learn-rg-0000",
        "zones": ""
    }
    
    

Scarica AKS Edge Essentials

Scaricare il programma di installazione K3s e i file del nodo Windows nella condivisione file di Azure, quindi montarlo nella macchina virtuale in modo da accedervi usando l'unità con la lettera Z.

  1. Prendere nota del nome dell'account di archiviazione, della chiave e del nome della condivisione file di Azure. Saranno necessari in un secondo momento:

    storageAccountName=$(az storage account list --resource-group $resourcegroup --query '[0].name' -o tsv)
    storageAccountKey=$(az storage account keys list --resource-group $resourcegroup --account-name $storageAccountName --query '[0].value' -o tsv)
    storageAccountFile=$(az storage share list --account-name $storageAccountName --account-key $storageAccountKey --query '[0].name' -o tsv)
    
    echo Storage Account Name: $storageAccountName
    echo Storage Account Key: $storageAccountKey
    echo Storage Account File: $storageAccountFile
    
  2. Scaricare il programma di installazione K3s, i file dei nodi e i certificati di Windows nella condivisione file di Azure:

    curl -L -o ~/clouddrive/MicrosoftRootCertificateAuthority2011.cer "https://download.microsoft.com/download/2/4/8/248D8A62-FCCD-475C-85E7-6ED59520FC0F/MicrosoftRootCertificateAuthority2011.cer" && echo "Downloaded MicrosoftRootCertificateAuthority2011.cer"
    curl -L -o ~/clouddrive/MicCodSigPCA2011.crt "https://www.microsoft.com/pkiops/certs/MicCodSigPCA2011_2011-07-08.crt" && echo "Downloaded MicCodSigPCA2011.crt"
    curl -L -o ~/clouddrive/AksEdge-Learn.msi "https://aka.ms/aks-edge/k3s-msi" && echo "Downloaded AksEdge-Learn.msi"
    curl -L -o ~/clouddrive/AksEdgeWindows-Learn.zip "https://aka.ms/aks-edge/windows-node-zip" && echo "Downloaded AksEdgeWindows-Learn.zip"
    
  3. Creare il file RDP per connettersi alla macchina virtuale:

    publicIp=$(az vm show -d -g $resourcegroup -n $vmname --query publicIps -o tsv)
    echo full address:s:$publicIp > ./myvm.rdp
    echo username:s:$username >> ./myvm.rdp
    
  4. Scaricare il file RDP nel computer locale:

    download myvm.rdp
    
  5. Aprire il file RDP e connettersi alla macchina virtuale usando azureuser come utente e il valore Admin Password annotato in precedenza, come password.

    Suggerimento

    Quando si accede per la prima volta alla macchina virtuale Windows 11 Enterprise di Azure, è possibile accettare tutte le opzioni facendo clic su Avanti e Accetta.

    Nota

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

  6. Aprire la riga di comando di PowerShell facendo clic sul menu Start e digitando PowerShell.

  7. Eseguire i comandi di PowerShell seguenti per montare la condivisione file di Azure nella macchina virtuale con la lettera Z. Sostituire i valori di [YOUR_STORAGE_ACCOUNT_NAME], [YOUR_STORAGE_ACCOUNT_KEY] e [YOUR_STORAGE_ACCOUNT_FILE] con i valori annotati in precedenza:

    $storageAccountName = "[YOUR_STORAGE_ACCOUNT_NAME]"
    $storageAccountKey = "[YOUR_STORAGE_ACCOUNT_KEY]"
    $storageAccountFile = "[YOUR_STORAGE_ACCOUNT_FILE]"
    
    # Save the password so the drive will persist on reboot
    cmd.exe /C "cmdkey /add:`"$storageAccountName.file.core.windows.net`" /user:`"localhost\$storageAccountName`" /pass:`"$storageAccountKey`""
    
    # Mount the drive with the letter Z
    New-PSDrive -Name Z -PSProvider FileSystem -Root "\\$storageAccountName.file.core.windows.net\$storageAccountFile" -Persist
    

Distribuire AKS Edge Essentials

Dopo aver creato la macchina virtuale scaricati i file di installazione, eseguire lo script di PowerShell AksEdgeQuickStart-v2.ps1 per semplificare la distribuzione di AKS Edge Essentials.

Nota

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

  1. Aprire la riga di comando di PowerShell facendo clic sul menu Start e digitando PowerShell. Eseguire quindi il comando seguente per impostare la directory di lavoro su C:\aksedgeLearn:

    if (!(Test-Path -Path "C:\aksedgeLearn")) {
        New-Item -ItemType Directory -Path "C:\aksedgeLearn" | Out-Null
    }
    Push-Location "C:\aksedgeLearn"
    
  2. Installare i certificati di Windows:

    certutil.exe -addstore -f "AuthRoot" "Z:\\MicrosoftRootCertificateAuthority2011.cer"
    certutil.exe -addstore -f "CA" "Z:\\MicCodSigPCA2011.crt"
    
  3. Impostare i parametri per creare un cluster K3S a macchina singola con un nodo Linux e Windows. I file aideuser-config.json e aksedge-config.json vengono usati per eseguire lo script AksEdgeQuickStart-v2.ps1 di PowerShell:

    $aideuserConfig = @"
    {
        "SchemaVersion": "1.1",
        "Version": "1.0",
        "AksEdgeProduct": "AKS Edge Essentials - K3s",
        "AksEdgeProductUrl": "Z:\\AksEdge-Learn.msi",
        "Azure": {
            "SubscriptionName": "",
            "SubscriptionId": "",
            "TenantId": "",
            "ResourceGroupName": "",
            "ServicePrincipalName": "",
            "Location": "",
            "CustomLocationOID":"",
            "Auth":{
                "ServicePrincipalId":"",
                "Password":""
            }
        },
        "AksEdgeConfigFile": "aksedge-config.json"
    }
    "@
    
    echo $aideuserConfig | Out-File -FilePath "aideuser-config.json"
    
    $aksedgeConfig = @"
    {
        "SchemaVersion": "1.9",
        "Version": "1.0",
        "DeploymentType": "SingleMachineCluster",
        "Init": {
            "ServiceIPRangeSize": 10
        },
        "Network": {
            "NetworkPlugin": "flannel",
            "InternetDisabled": false
        },
        "User": {
            "AcceptEula": true,
            "AcceptOptionalTelemetry": true
        },
        "Machines": [
            {
                "LinuxNode": {
                    "CpuCount": 2,
                    "MemoryInMB": 2048,
                    "DataSizeInGB": 20
                },
                "WindowsNode": {
                    "CpuCount": 2,
                    "MemoryInMB": 2048
                }
            }
        ]
    }
    "@
    
    echo $aksedgeConfig | Out-File -FilePath "aksedge-config.json"
    
  4. Scaricare ed eseguire lo script di PowerShell AksEdgeQuickStart-v2.ps1:

    $url = "https://raw.githubusercontent.com/Azure/AKS-Edge/main/tools/scripts/AksEdgeQuickStart/AksEdgeQuickStart-v2.ps1"
    Invoke-WebRequest -Uri $url -OutFile .\AksEdgeQuickStart-v2.ps1
    Unblock-File .\AksEdgeQuickStart-v2.ps1
    Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force
    
    .\AksEdgeQuickStart-v2.ps1 -AideUserConfigFilePath .\aideuser-config.json -AksEdgeConfigFilePath .\aksedge-config.json
    

    Nota

    Il processo di installazione richiede circa 30 minuti.

    Questo script automatizza i passaggi seguenti:

    • Nella cartella di lavoro C:\aksedgeLearn della macchina virtuale, lo script scarica l'archivio GitHub di Azure/AKS-Edge e lo estrae in una cartella AKS-Edge-main.
    • Richiama la funzione Start-AideWorkflow che esegue le attività seguenti:
      • Decomprime i file di installazione di Windows.
      • Installa l'identità del servizio gestito di AKS Edge Essentials.
      • Installa le funzionalità del sistema operativo host necessarie (Install-AksEdgeHostFeatures).
      • Distribuisce un singolo cluster K3S del computer con un nodo Linux e Windows.

    L'esempio seguente con le ultime righe dell'output mostra che il download e l'installazione della distribuzione di AKS Edge Essentials K3S sono stati eseguiti correttamente. È anche possibile accedere al file di log in C:\aksedgeLearn\aksedgedlog-yymmdd-hhmm.txt

    ...
    [01/04/2024 15:29:34]
    Waiting for Windows node IP address...
    
    [01/04/2024 15:29:34]
    Testing Windows node control channel...
    
    [01/04/2024 15:29:37]
    ...successfully connected to the Windows node
    
    [01/04/2024 15:31:39]
    Waiting for Windows node to transition to ready state (796 seconds remaining)
    - Waiting for Kubernetes node (myvm-wedge) to reach condition Ready, time remaining = 796 seconds
    - Kubernetes node (myvm-wedge) reached condition Ready
    
    [01/04/2024 15:31:57]
    AksEdge - copying Kubeconfig into the host.
    
    [01/04/2024 15:32:02]
    AksEdge - new deployment successfully created.
    
    * AksEdge VM deployment successfull.
    Deployment Successful.
    Step 4: Connect to Arc
    >> skipping step 4
    Duration: 0 hrs 23 mins 13 seconds
    

    Screenshot of Windows VM with powershell commands output demonstrating a successful download and installation of AKS Edge Essentials K3s distribution.

Suggerimento

Poiché il completamento del processo di installazione richiede circa 30 minuti, è possibile continuare con l'unità di apprendimento successiva, sarà possibile tornare a questo in un secondo momento.