練習 - 已啟用 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 資源群組。
在另一個瀏覽器索引標籤中,瀏覽至 Azure Cloud Shell。
在 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
使用內建的擁有者角色建立新的服務主體,並限制為資源群組範圍。 此服務主體會用於連線到 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 appId
和Service Principal password
。 您稍後會用到。使用 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。
在 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 Password
、Subscription Name
、Subscription ID
、Tenant ID
和Resource Group Name
。 您稍後會用到。使用 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": "" }
執行 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
將 RDP 檔案下載至本機電腦:
download myvm.rdp
開啟 RDP 檔案,並使用 azureuser 作為使用者,以及您稍早記下的
Admin Password
作為密碼來連線至 VM。
提示
第一次登入 Windows 11 企業版 Azure VM 時,請按一下 [下一步] 和 [接受],即可接受所有選項。
部署和啟用 Arc 的 AKS 邊緣程式集
由於已建立 VM,讓我們執行 AksEdgeQuickStart-v2.ps1
PowerShell 指令碼,輕鬆部署 AKS 邊緣程式集,並將其連線至 Azure Arc。
注意
下列命令會在 VM 的 PowerShell 命令列中執行。
按一下 [開始] 功能表並輸入 PowerShell,以開啟 PowerShell 命令列。 然後,執行下列命令,將工作目錄變更為
C:\aksedgeLearn
:if (!(Test-Path -Path "C:\aksedgeLearn")) { New-Item -ItemType Directory -Path "C:\aksedgeLearn" | Out-Null } Push-Location "C:\aksedgeLearn"
下載 AKS 邊緣程式集 K3s 安裝程式:
curl -L -o AksEdge-Learn.msi "https://aka.ms/aks-edge/k3s-msi"
設定參數,以使用 Linux 節點建立單一電腦 K3S 叢集。
aideuser-config.json
和aksedge-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"
下載並執行
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
- 在 VM 工作資料夾
執行下列命令以確認部署成功:
kubectl get nodes -o wide kubectl get pods -A -o wide
下列範例螢幕擷取畫面顯示 Linux 節點已就緒且 Pod 正在執行:
檢視 Azure 入口網站中的叢集
如果您瀏覽至
aksedge-training
資源群組,然後選取myVM-k3s
Kubernetes - Azure Arc 資源,即可在 Azure 入口網站中檢視叢集。在左側面板中,選取 Kubernetes 資源 (預覽) 底下的 [命名空間] 選項。
您需要使用持有人權杖登入,才能檢視 Kubernetes 資源。 若要取得權杖,請在 VM 的 PowerShell 命令列中執行下列命令:
Get-AksEdgeManagedServiceToken
現在您可以檢視叢集上的資源。 工作負載會顯示在叢集上執行的 Pod。