練習 - 已啟用 Arc 的 AKS 邊緣程式集叢集

已完成

在此練習中,我們會在具有 Linux 節點且啟用 Arc 的單一電腦 K3S 叢集中部署 AKS 邊緣程式集。 我們會使用 Azure Cloud Shell 來建立具有 Windows 11 企業版 的 Azure 虛擬機器 (VM),並執行 PowerShell 指令碼,以輕鬆部署 AKS 邊緣程式集,然後將它連線至 Azure Arc。

在 Azure 訂用帳戶中建立必要的資源

本單元會提供您可以使用 Azure 訂用帳戶執行的 Azure CLI 命令。 如果您還沒有 Azure 訂用帳戶,請立即建立一個免費帳戶

重要

您需要具有擁有者角色或是參與者使用者存取系統管理員角色組合的 Azure 訂用帳戶。 請瀏覽至 Azure 入口網站 上的訂用帳戶,選取 Azure 入口網站左側的 [存取控制 (IAM)],然後選取 [檢視我的存取權],即可檢查您的存取層級。 如需詳細資訊,請參閱如何使用 Azure 入口網站來管理 Azure 資源群組

  1. 在另一個瀏覽器索引標籤中,瀏覽至 Azure Cloud Shell

  2. 在 Cloud Shell 中執行下列命令,以設定您的工作階段,並建立要用於此單元的資源群組。 以您的 Azure 訂用帳戶識別碼值取代 <your-Azure-subscription-ID> 的值:

    resourcegroup="aksedge-training"
    location="westus3"
    subscriptionid="<your-Azure-subscription-ID>"
    
    az account set --subscription $subscriptionid
    az group create --name $resourcegroup --location $location
    
  3. 使用內建的擁有者角色建立新的服務主體,並限制為資源群組範圍。 此服務主體會用於連線到 Azure Arc。使用 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
    

    注意

    記下 Service Principal appIdService Principal password。 您稍後會用到。

  4. 使用 az provider register 命令,在 Azure 訂用帳戶中啟用所有必要的資源提供者:

    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
    

使用 Windows 11 企業版建立 Azure VM

讓我們使用 Azure Cloud Shell 建立具有 Windows 11 企業版的 Azure VM。

  1. 在 Cloud Shell 中執行下列命令,以設定用於建立 Azure VM 的變數,並在稍後執行 AksEdgeQuickStart-v2.ps1 PowerShell 指令碼:

    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
    

    注意

    記下 Admin PasswordSubscription NameSubscription IDTenant IDResource Group Name。 您稍後會用到。

  2. 使用 az vm create 命令,建立具有 Windows 11 企業版的 Azure VM:

    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
    

    建立虛擬機器和支援資源需要幾分鐘的時間。 下列範例輸出顯示 VM 建立作業成功。

    {
        "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. 執行 PowerShell Get-AzRemoteDesktopFile Cmdlet 以取得 RDP 檔案並連線到 VM:

    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. 將 RDP 檔案下載至本機電腦:

    download myvm.rdp
    
  5. 開啟 RDP 檔案,並使用 azureuser 作為使用者,以及您稍早記下的 Admin Password 作為密碼來連線至 VM。

提示

第一次登入 Windows 11 企業版 Azure VM 時,請按一下 [下一步] 和 [接受],即可接受所有選項。

部署和啟用 Arc 的 AKS 邊緣程式集

由於已建立 VM,讓我們執行 AksEdgeQuickStart-v2.ps1 PowerShell 指令碼,輕鬆部署 AKS 邊緣程式集,並將其連線至 Azure Arc。

注意

下列命令會在 VM 的 PowerShell 命令列中執行。

  1. 按一下 [開始] 功能表並輸入 PowerShell,以開啟 PowerShell 命令列。 然後,執行下列命令,將工作目錄變更為 C:\aksedgeLearn

    if (!(Test-Path -Path "C:\aksedgeLearn")) {
        New-Item -ItemType Directory -Path "C:\aksedgeLearn" | Out-Null
    }
    Push-Location "C:\aksedgeLearn"
    
  2. 下載 AKS 邊緣程式集 K3s 安裝程式:

    curl -L -o AksEdge-Learn.msi "https://aka.ms/aks-edge/k3s-msi"
    
  3. 設定參數,以使用 Linux 節點建立單一電腦 K3S 叢集。 aideuser-config.jsonaksedge-config.json 檔案可用於執行 AksEdgeQuickStart-v2.ps1 PowerShell 指令碼。 使用下列您稍早記下的值取代 [SUBSCRIPTION_NAME][SUBSCRIPTION_ID][TENANT_ID][RESOURCE_GROUP_NAME][SERVICE_PRINCIPAL_ID][SERVICE_PRINCIPAL_PASSWORD] 的值:

    $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. 下載並執行 AksEdgeQuickStart-v2.ps1 PowerShell 指令碼:

    $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
    

    注意

    安裝流程大約需要 10 分鐘才能完成。

    此指令碼會自動執行下列步驟:

    • 在 VM 工作資料夾 C:\aksedgeLearn 中,指令碼會下載 Azure/AKS-Edge 的 GitHub 封存,並將解壓縮至資料夾 AKS-Edge-main
    • 叫用執行下列工作的 Start-AideWorkflow 函式:
      • 安裝 AKS 邊緣程式集 MSI。
      • 安裝必要的主機 OS 功能 (Install-AksEdgeHostFeatures)。
      • 使用 Linux 節點部署單一電腦 K3S 叢集。
    • 叫用執行下列工作的 Connect-AideArc 函式:
      • 安裝 Azure Connected Machine Agent,並將主機電腦連線到適用於伺服器的 Arc。
      • 將部署的叢集連線到 Arc 以連接 Kubernetes。

    下列輸出最後一行的範例顯示 AKS 邊緣程式集 K3s 散發套件的下載和安裝成功。 您也可以存取位於 C:\aksedgeLearn\aksedgedlog-yymmdd-hhmm.txt 的記錄檔

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

    Windows VM 的螢幕擷取畫面,其中顯示示範 AKS Edge Essentials 成功部署並與 Azure Arc 連線的 PowerShell 命令輸出。

  5. 執行下列命令以確認部署成功:

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

    下列範例螢幕擷取畫面顯示 Linux 節點已就緒且 Pod 正在執行:

    Windows VM 的螢幕擷取畫面,其中顯示示範 AKS Edge Essentials 成功部署的 PowerShell 命令輸出。

檢視 Azure 入口網站中的叢集

  1. 如果您瀏覽至 aksedge-training 資源群組,然後選取 myVM-k3sKubernetes - Azure Arc 資源,即可在 Azure 入口網站中檢視叢集。

  2. 在左側面板中,選取 Kubernetes 資源 (預覽) 底下的 [命名空間] 選項。

    Azure 入口網站中 AKS Edge Essentials Kubernetes Azure Arc 資源的螢幕擷取畫面,其中已醒目提示命名空間。

  3. 您需要使用持有人權杖登入,才能檢視 Kubernetes 資源。 若要取得權杖,請在 VM 的 PowerShell 命令列中執行下列命令:

    Get-AksEdgeManagedServiceToken
    
  4. 現在您可以檢視叢集上的資源。 工作負載會顯示在叢集上執行的 Pod。

    Azure 入口網站中 AKS Edge Essentials Kubernetes Azure Arc 工作負載的螢幕擷取畫面。