Übung: Bereitstellen eines AKS Edge Essentials-K3s-Einzelcomputerclusters

Abgeschlossen

In dieser Übung stellen Sie AKS Edge Essentials in einem K3s-Einzelcomputercluster mit einem Linux- und Windows-Knoten bereit. Sie verwenden Azure Cloud Shell, um eine Azure-VM mit Windows 11 Enterprise zu erstellen und ein PowerShell-Skript für die einfache Bereitstellung von AKS Edge Essentials auszuführen.

Erstellen einer Azure-VM mit Windows 11 Enterprise

Erstellen Sie nun mithilfe von Azure Cloud Shell die Azure-VM mit Windows 11 Enterprise.

  1. Aktivieren Sie zunächst die Azure-Sandbox.

  2. Führen Sie den folgenden Befehl in der Azure Cloud Shell aus, um die Variablen zum Erstellen der Azure-VM festzulegen:

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

    Hinweis

    Notieren Sie sich den Wert für Admin Password. Sie benötigen sie später.

  3. Erstellen Sie die Azure-VM mit Windows 11 Enterprise mithilfe des Befehls 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
    

    Das Erstellen des virtuellen Computers und der unterstützenden Ressourcen dauert einige Minuten. In der folgenden Beispielausgabe wird angezeigt, dass der Vorgang der VM-Erstellung erfolgreich war.

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

Herunterladen von AKS Edge Essentials

Laden Sie das K3s-Installationsprogramm und die Windows-Knotendateien in die Azure-Dateifreigabe herunter, und binden Sie sie dann in die VM ein, damit Sie über das Laufwerk mit dem Buchstaben Z darauf zugreifen können.

  1. Notieren Sie sich den Namen des Speicherkontos sowie den Schlüssel und den Namen der Azure-Dateifreigabe. Sie benötigen sie später:

    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. Laden Sie das K3s-Installationsprogramm und die Windows-Knotendateien und -Zertifikate auf die Azure-Dateifreigabe herunter:

    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. Erstellen Sie die RDP-Datei, um eine Verbindung mit der VM herzustellen:

    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. Laden Sie die RDP-Datei auf Ihren lokalen Computer herunter:

    download myvm.rdp
    
  5. Öffnen Sie die RDP-Datei, und stellen Sie eine Verbindung mit der VM her. Verwenden Sie dabei azureuser als Benutzer und den zuvor notierten Wert für Admin Password als Kennwort.

    Tipp

    Wenn Sie sich zum ersten Mal bei der Azure-VM unter Windows 11 Enterprise anmelden, können Sie alle Optionen akzeptieren, indem Sie auf Weiter und Akzeptieren klicken.

    Hinweis

    Die folgenden Befehle werden in der PowerShell-Befehlszeile der VM ausgeführt.

  6. Öffnen Sie die PowerShell-Befehlszeile, indem Sie auf das Menü Start klicken und PowerShell eingeben.

  7. Führen Sie die folgenden PowerShell-Befehle aus, um die Azure-Dateifreigabe in die VM mit dem Buchstaben Z einzubinden. Ersetzen Sie die Werte von [YOUR_STORAGE_ACCOUNT_NAME], [YOUR_STORAGE_ACCOUNT_KEY] und [YOUR_STORAGE_ACCOUNT_FILE] durch die Werte, die Sie zuvor notiert haben:

    $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
    

Bereitstellen von AKS Edge Essentials

Nachdem die VM erstellt wurde und die Installationsdateien heruntergeladen wurden, führen Sie das PowerShell-Skript AksEdgeQuickStart-v2.ps1 für die einfache Bereitstellung von AKS Edge Essentials aus.

Hinweis

Die folgenden Befehle werden in der PowerShell-Befehlszeile der VM ausgeführt.

  1. Öffnen Sie die PowerShell-Befehlszeile, indem Sie auf das Menü Start klicken und PowerShell eingeben. Führen Sie dann den folgenden Befehl aus, um das Arbeitsverzeichnis in C:\aksedgeLearn zu ändern:

    if (!(Test-Path -Path "C:\aksedgeLearn")) {
        New-Item -ItemType Directory -Path "C:\aksedgeLearn" | Out-Null
    }
    Push-Location "C:\aksedgeLearn"
    
  2. Installieren von Windows-Zertifikaten:

    certutil.exe -addstore -f "AuthRoot" "Z:\\MicrosoftRootCertificateAuthority2011.cer"
    certutil.exe -addstore -f "CA" "Z:\\MicCodSigPCA2011.crt"
    
  3. Legen Sie die Parameter fest, um einen K3s-Einzelcomputercluster mit einem Linux- und Windows-Knoten zu erstellen. Die Dateien aideuser-config.json und aksedge-config.json werden zum Ausführen des PowerShell-Skripts AksEdgeQuickStart-v2.ps1 verwendet.

    $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. Laden Sie das PowerShell-Skript AksEdgeQuickStart-v2.ps1 herunter, und führen Sie es aus:

    $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
    

    Hinweis

    Der Installationsprozess dauert etwa 30 Minuten.

    Dieses Skript automatisiert die folgenden Schritte:

    • Im VM-Arbeitsordner C:\aksedgeLearn lädt das Skript das GitHub-Archiv von Azure/AKS-Edge herunter und entpackt es im Ordner AKS-Edge-main.
    • Ruft die Funktion Start-AideWorkflow auf, die die folgenden Tasks ausführt:
      • Entpacken der Windows-Installationsdateien
      • Installieren der MSI-Datei für AKS Edge Essentials
      • Installieren der erforderlichen Hostbetriebssystemfeatures (Install-AksEdgeHostFeatures)
      • Bereitstellen eines K3s-Einzelcomputerclusters mit einem Linux- und Windows-Knoten

    Das folgende Beispiel mit den letzten Zeilen der Ausgabe zeigt, dass der Download und die Installation der K3s-Distribution für AKS Edge Essentials erfolgreich waren. Sie können auf die Protokolldatei auch unter C:\aksedgeLearn\aksedgedlog-yymmdd-hhmm.txt zugreifen.

    ...
    [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.

Tipp

Da der Installationsprozess etwa 30 Minuten dauert, können Sie mit der nächsten Lerneinheit fortfahren und später zu dieser zurückkehren.