Ejercicio: Implementación del clúster K3S de una sola máquina en AKS Edge Essentials

Completado

En este ejercicio, implementaremos AKS Edge Essentials en un clúster K3S de una sola máquina con un nodo Linux y Windows. Usaremos Azure Cloud Shell para crear una máquina virtual (VM) de Azure con Windows 11 Enterprise y ejecutaremos un script de PowerShell para facilitar la implementación de AKS Edge Essentials.

Creación de una máquina virtual de Azure con Windows 11 Enterprise

Vamos a crear la máquina virtual de Azure con Windows 11 Enterprise mediante Azure Cloud Shell.

  1. Empiece por activar el espacio aislado de Azure.

  2. Ejecute el comando siguiente en Azure Cloud Shell para establecer las variables para crear la máquina virtual de Azure:

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

    Nota:

    Anote el valor de Admin Password. Lo necesitará más adelante.

  3. Cree la máquina virtual de Azure con Windows 11 Enterprise mediante el 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 creación de la máquina virtual y los recursos auxiliares tarda unos minutos en realizarse. En la salida de ejemplo siguiente se muestra que la operación de creación de la máquina virtual se realizó correctamente.

    {
        "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": ""
    }
    
    

Descarga de AKS Edge Essentials

Vamos a descargar el instalador de K3s y los archivos de nodo de Windows en el recurso compartido de archivos de Azure y, a continuación, montarlo en la máquina virtual para poder acceder a él mediante la unidad con la letra Z.

  1. Anote el nombre de la cuenta de almacenamiento, la clave y el nombre del recurso compartido de archivos de Azure. Lo necesitará más adelante:

    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. Descargue el instalador de K3s, los archivos de nodo de Windows y los certificados en el recurso compartido de archivos de 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. Cree el archivo RDP para conectarse a la máquina virtual:

    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. Descargue el archivo RDP en la máquina local:

    download myvm.rdp
    
  5. Abra el archivo RDP y conéctese a la máquina virtual con azureuser como usuario y el valor de Admin Password que anotó anteriormente, como contraseña.

    Sugerencia

    Al iniciar sesión por primera vez en la máquina virtual de Azure Windows 11 Enterprise, puede aceptar todas las opciones haciendo clic en Siguiente y Aceptar.

    Nota:

    Los comandos siguientes se ejecutan en la línea de comandos de PowerShell de la máquina virtual.

  6. Para abrir la línea de comandos de PowerShell, haga clic en el menú Inicio y escriba PowerShell.

  7. Ejecute los siguientes comandos de PowerShell para montar el recurso compartido de archivos de Azure en la máquina virtual con la letra Z. Reemplace los valores de [YOUR_STORAGE_ACCOUNT_NAME], [YOUR_STORAGE_ACCOUNT_KEY] y [YOUR_STORAGE_ACCOUNT_FILE] por los valores que anotó anteriormente:

    $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
    

Implementación de AKS Edge Essentials

Ahora que se ha creado la máquina virtual y se han descargado los archivos de instalación, vamos a ejecutar el script de PowerShell AksEdgeQuickStart-v2.ps1 para una implementación sencilla de AKS Edge Essentials.

Nota:

Los comandos siguientes se ejecutan en la línea de comandos de PowerShell de la máquina virtual.

  1. Para abrir la línea de comandos de PowerShell, haga clic en el menú Inicio y escriba PowerShell. Ejecute el siguiente comando para cambiar el directorio de trabajo a C:\aksedgeLearn:

    if (!(Test-Path -Path "C:\aksedgeLearn")) {
        New-Item -ItemType Directory -Path "C:\aksedgeLearn" | Out-Null
    }
    Push-Location "C:\aksedgeLearn"
    
  2. Instale los certificados de Windows:

    certutil.exe -addstore -f "AuthRoot" "Z:\\MicrosoftRootCertificateAuthority2011.cer"
    certutil.exe -addstore -f "CA" "Z:\\MicCodSigPCA2011.crt"
    
  3. Establezca los parámetros para crear un clúster K3S de una sola máquina con un nodo Linux y Windows. Los archivos aideuser-config.json y aksedge-config.json se usan para ejecutar el script de PowerShell AksEdgeQuickStart-v2.ps1:

    $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. Descargue y ejecute el script de 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:

    El proceso de instalación tarda unos 30 minutos en completarse.

    Este script automatiza los siguientes pasos:

    • En la carpeta de trabajo de la máquina virtual C:\aksedgeLearn, el script descarga el archivo de GitHub de Azure/AKS-Edge y lo descomprime en una carpeta AKS-Edge-main.
    • Invoca la función Start-AideWorkflow que realiza las siguientes tareas:
      • Descomprime los archivos de instalación de Windows.
      • Instala el MSI de AKS Edge Essentials.
      • Instala las características necesarias del sistema operativo host (Install-AksEdgeHostFeatures).
      • Implementa un clúster K3S de una sola máquina con un nodo Linux y Windows.

    En el ejemplo siguiente con las últimas líneas de la salida, se muestra que la descarga e instalación de la distribución K3s de AKS Edge Essentials se realizó correctamente. También puede acceder al archivo de registro en 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.

Sugerencia

Dado que el proceso de instalación tarda unos 30 minutos en completarse, puede continuar con la siguiente unidad de aprendizaje, volveremos a esto más adelante.