Übung: Aktivieren von Arc für einen AKS Edge Essentials-Cluster

Abgeschlossen

In dieser Übung stellen Sie AKS Edge Essentials in einem K3S-Cluster mit einem einzelnen Computer und einem Linux-Knoten bereit und aktivieren Arc dafür. Sie verwenden Azure Cloud Shell, um eine Azure-VM mit Windows 11 Enterprise zu erstellen, ein PowerShell-Skript für die einfache Bereitstellung von AKS Edge Essentials auszuführen und dann eine Verbindung mit Azure Arc herzustellen.

Erstellen der erforderlichen Ressourcen in Ihrem Azure-Abonnement

Diese Lerneinheit enthält Azure CLI-Befehle, die Sie mit einem Azure-Abonnement ausführen können. Falls Sie noch nicht über ein Azure-Abonnement verfügen, können Sie ein kostenloses Konto erstellen.

Wichtig

Sie benötigen ein Azure-Abonnement, das entweder über die Rolle Besitzer oder über eine Kombination der Rollten Mitwirkender und Benutzerzugriffsadministrator verfügt. Sie können Ihre Zugriffsebene überprüfen, indem Sie im Azure-Portal zu Ihrem Abonnement navigieren, Zugriffssteuerung (IAM) auf der linken Seite des Azure-Portals auswählen und dann Meinen Zugriff anzeigen auswählen. Weitere Informationen finden Sie im Artikel zum Verwalten von Azure-Ressourcengruppen über das Azure-Portal.

  1. Navigieren Sie auf einer anderen Registerkarte des Browsers zu Azure Cloud Shell.

  2. Führen Sie die folgenden Befehle in Cloud Shell aus, um Ihre Sitzung einzurichten und eine Ressourcengruppe zu erstellen, die für diese Lerneinheit verwendet werden soll. Ersetzen Sie den Wert <your-Azure-subscription-ID> durch den ID-Wert für Ihr Azure-Abonnement:

    resourcegroup="aksedge-training"
    location="westus3"
    subscriptionid="<your-Azure-subscription-ID>"
    
    az account set --subscription $subscriptionid
    az group create --name $resourcegroup --location $location
    
  3. Erstellen Sie einen neuen Dienstprinzipal mit der integrierten Rolle Besitzer und beschränkt auf den Ressourcengruppenbereich. Dieser Dienstprinzipal wird verwendet, um eine Verbindung mit Azure Arc herzustellen. Verwenden Sie den Befehl az ad sp create-for-rbac:

    resourcegroup="aksedge-training"
    serviceprincipalname="aksedge-sp"
    subscriptionid=$(az account show --query id -o tsv)
    
    az ad sp create-for-rbac --name $serviceprincipalname --role "Owner" --scopes /subscriptions/$subscriptionid/resourceGroups/$resourcegroup
    

    Hinweis

    Notieren Sie sich die Werte für Service Principal appId und Service Principal password. Sie benötigen sie später.

  4. Aktivieren Sie alle erforderlichen Ressourcenanbieter im Azure-Abonnement mithilfe des Befehls az provider register:

    az provider register --namespace Microsoft.HybridCompute
    az provider register --namespace Microsoft.GuestConfiguration
    az provider register --namespace Microsoft.HybridConnectivity
    az provider register --namespace Microsoft.Kubernetes
    az provider register --namespace Microsoft.KubernetesConfiguration
    az provider register --namespace Microsoft.ExtendedLocation
    

Erstellen einer Azure-VM mit Windows 11 Enterprise

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

  1. Führen Sie den folgenden Befehl in Cloud Shell aus, um die Variablen zum Erstellen der Azure-VM festzulegen und später das PowerShell-Skript AksEdgeQuickStart-v2.ps1 auszuführen:

    resourcegroup="aksedge-training"
    location="westus3"
    vmname="myVM"
    username="azureuser"
    let "randomIdentifier=$RANDOM*$RANDOM"
    adminpassword="Admin-$randomIdentifier-Password!"
    subscriptionname=$(az account show --query name -o tsv)
    subscriptionid=$(az account show --query id -o tsv)
    tenantid=$(az account show --query tenantId -o tsv)
    
    echo Admin Password: $adminpassword
    echo Subscription Name: $subscriptionname
    echo Subscription ID: $subscriptionid
    echo Tenant ID: $tenantid
    echo Resource Group Name: $resourcegroup
    

    Hinweis

    Notieren Sie sich die Werte für Admin Password, Subscription Name, Subscription ID, Tenant ID und Resource Group Name. Sie benötigen sie später.

  2. Erstellen Sie die Azure-VM mit Windows 11 Enterprise mithilfe des Befehls az vm create:

    az vm create \
        --resource-group $resourcegroup \
        --location $location \
        --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/aksedge-training/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": "aksedge-training",
        "zones": ""
    }
    
    
  3. Führen Sie das PowerShell-Cmdlet Get-AzRemoteDesktopFile aus, um die RDP-Datei abzurufen und 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.

Bereitstellen von AKS Edge Essentials und Aktivieren von Arc

Die VM wurde erstellt. Führen Sie nun das PowerShell-Skript AksEdgeQuickStart-v2.ps1 für die einfache Bereitstellung von AKS Edge Essentials aus, und stellen Sie eine Verbindung mit Azure Arc her.

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. Laden Sie das Installationsprogramm für AKS Edge Essentials K3s herunter:

    curl -L -o AksEdge-Learn.msi "https://aka.ms/aks-edge/k3s-msi"
    
  3. Legen Sie die Parameter fest, um einen K3S-Cluster mit einem einzelnen Computer und einem Linux-Knoten zu erstellen. Die Dateien aideuser-config.json und aksedge-config.json werden zum Ausführen des PowerShell-Skripts AksEdgeQuickStart-v2.ps1 verwendet. Ersetzen Sie die Werte [SUBSCRIPTION_NAME], [SUBSCRIPTION_ID], [TENANT_ID], [RESOURCE_GROUP_NAME], [SERVICE_PRINCIPAL_ID] und [SERVICE_PRINCIPAL_PASSWORD] durch die Werte, die Sie zuvor notiert haben:

    $aideuserConfig = @"
    {
        "SchemaVersion": "1.1",
        "Version": "1.0",
        "AksEdgeProduct": "AKS Edge Essentials - K3s",
        "AksEdgeProductUrl": "C:\\aksedgeLearn\\AksEdge-Learn.msi",
        "Azure": {
            "SubscriptionName": "[SUBSCRIPTION_NAME]",
            "SubscriptionId": "[SUBSCRIPTION_ID]",
            "TenantId": "[TENANT_ID]",
            "ResourceGroupName": "[RESOURCE_GROUP_NAME]",
            "ServicePrincipalName": "aksedge-sp",
            "Location": "westus3",
            "CustomLocationOID":"",
            "Auth":{
                "ServicePrincipalId":"[SERVICE_PRINCIPAL_ID]",
                "Password":"[SERVICE_PRINCIPAL_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": 4096,
                    "DataSizeInGB": 20
                }
            }
        ]
    }
    "@
    
    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 10 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 Aufgaben ausführt:
      • Installieren der MSI-Datei für AKS Edge Essentials
      • Installieren der erforderlichen Hostbetriebssystemfeatures (Install-AksEdgeHostFeatures)
      • Bereitstellen eines K3S-Clusters mit einem einzelnen Computer und einem Linux-Knoten
    • Ruft die Funktion Connect-AideArc auf, die die folgenden Aufgaben ausführt:
      • Installieren des Azure Connected Machine-Agents und Verbinden des Hostcomputers mit Arc für Servers
      • Verbinden des bereitgestellten Clusters mit Arc für verbundene Kubernetes-Instanzen

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

    ...
    [01/26/2024 16:20:23] AksEdge - Connecting cluster to Azure Arc
    
     - Checking Az PS module dependencies
     - Checking for NuGet
     - NuGet found
     - Az.Resources module with version 6.4.1 is found
     - Az.Accounts module with version 2.11.2 is found
     - Az.ConnectedKubernetes module with version 0.9.0 is found
     - Connecting to Azure Account
     - Verifying Azure Account connection ...
     - Verifying the Azure resource providers Microsoft.Kubernetes, Microsoft.KubernetesConfiguration, Microsoft.ExtendedLocation are registered
     - Resource provider Microsoft.Kubernetes is registered.
     - Resource provider Microsoft.KubernetesConfiguration is registered.
     - Resource provider Microsoft.ExtendedLocation is registered.
     - Checking whether cluster 'myVM-k3s' is connected to Azure Arc...
     - All checks succeeded. Connecting cluster to Azure Arc.
     - Populating tags for AKS-EE Cluster
    -- Connection succeeded.
    Connecting Azure Arc-enabled Server..
    Disabling WindowsAzureGuestAgent
    VERBOSE: Performing the operation "Set-Service" on target "Windows Azure Guest Agent (WindowsAzureGuestAgent)".
    VERBOSE: Performing the operation "Stop-Service" on target "Windows Azure Guest Agent (WindowsAzureGuestAgent)".
    WARNING: Waiting for service 'Windows Azure Guest Agent (WindowsAzureGuestAgent)' to stop...
    -- Connection succeeded.
    Azure Arc connections successful.
    Duration: 0 hrs 8 mins 29 seconds
    

    Screenshot der Ausgabe von Windows-VM mit PowerShell-Befehlen, die eine erfolgreiche Bereitstellung von AKS Edge Essentials demonstrieren und mit Azure Arc verbunden sind.

  5. Vergewissern Sie sich, dass die Bereitstellung erfolgreich war, indem Sie den folgenden Befehl ausführen:

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

    Der folgende Beispielscreenshot zeigt, dass der Linux-Knoten bereit ist und die Pods ausgeführt werden:

    Screenshot der Ausgabe von Windows-VM mit PowerShell-Befehlen, die eine erfolgreiche Bereitstellung von AKS Edge Essentials demonstrieren.

Anzeigen des Clusters im Azure-Portal

  1. Sie können Ihren Cluster im Azure-Portal anzeigen, wenn Sie zur Ressourcengruppe aksedge-training navigieren und dann myVM-k3sKubernetes – Azure Arc auswählen.

  2. Wählen Sie im linken Bereich die Option Namespaces unter Kubernetes-Ressourcen (Vorschau) aus.

    Screenshot der Azure Arc-Ressource

  3. Sie müssen sich mit einem Bearertoken anmelden, um die Kubernetes-Ressourcen anzuzeigen. Führen Sie zum Abrufen des Tokens den folgenden Befehl in der PowerShell-Befehlszeile der VM aus:

    Get-AksEdgeManagedServiceToken
    
  4. Jetzt können Sie Ressourcen in Ihrem Cluster anzeigen. Unter Workloads werden die Pods angezeigt, die in Ihrem Cluster ausgeführt werden.

    Screenshot von AKS Edge Essentials Kubernetes Azure Arc-Workloads im Azure-Portal.