Ejercicio: Clúster de AKS Edge Essentials habilitado para Arc
En este ejercicio, implementaremos AKS Edge Essentials en un clúster K3S de una sola máquina con un nodo Linux y lo habilitaremos para Arc. 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 y luego la conectaremos a Azure Arc.
Creación de los recursos necesarios en la suscripción de Azure
Esta unidad proporciona comandos de la CLI de Azure que puede ejecutar con una suscripción de Azure. Si aún no tiene una suscripción a Azure, cree ahora una cuenta gratuita.
Importante
Necesita una suscripción de Azure con el rol de Propietario, o una combinación de roles de Colaborador y Administrador de acceso de usuario. Para comprobar el nivel de acceso, vaya a la suscripción en Azure Portal, seleccione Control de acceso (IAM) en el lado izquierdo de Azure Portal y, después, Ver mi acceso. Para más información, vea cómo administrar los grupos de recursos de Azure mediante Azure Portal.
En otra pestaña del explorador, vaya a Azure Cloud Shell.
Ejecute los siguientes comandos en Cloud Shell para configurar la sesión y crear un grupo de recursos que se usará para esta unidad. Reemplace el valor de
<your-Azure-subscription-ID>
por el valor del id. de suscripción de Azure:resourcegroup="aksedge-training" location="westus3" subscriptionid="<your-Azure-subscription-ID>" az account set --subscription $subscriptionid az group create --name $resourcegroup --location $location
Cree una entidad de servicio con el rol Propietario integrado y restringido al ámbito del grupo de recursos. Esta entidad de servicio se usa para conectarse a Azure Arc. Use el comando 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
Nota:
Anote los valores de
Service Principal appId
yService Principal password
. Lo necesitará más adelante.Habilite todos los proveedores de recursos necesarios en la suscripción de Azure mediante el comando 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
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.
Ejecute el siguiente comando en Cloud Shell para establecer las variables a fin de crear la máquina virtual de Azure y ejecutar el script
AksEdgeQuickStart-v2.ps1
de PowerShell más adelante: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
Nota:
Anote los valores de
Admin Password
,Subscription Name
,Subscription ID
,Tenant ID
yResource Group Name
. Lo necesitará más adelante.Cree la máquina virtual de Azure con Windows 11 Enterprise mediante el comando 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
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/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": "" }
Ejecute el cmdlet Get-AzRemoteDesktopFile de PowerShell para obtener el archivo RDP a fin de 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
Descargue el archivo RDP en la máquina local:
download myvm.rdp
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.
Implementación y habilitación de AKS Edge Essentials para Arc
Ahora que se ha creado la máquina virtual, vamos a ejecutar el script de PowerShell AksEdgeQuickStart-v2.ps1
para facilitar la implementación de AKS Edge Essentials y conectarla a Azure Arc.
Nota:
Los comandos siguientes se ejecutan en la línea de comandos de PowerShell de la máquina virtual.
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"
Descargue el instalador de AKS Edge Essentials K3s:
curl -L -o AksEdge-Learn.msi "https://aka.ms/aks-edge/k3s-msi"
Establezca los parámetros para crear un clúster K3s de una sola máquina con un nodo Linux. Los archivos
aideuser-config.json
yaksedge-config.json
se usan para ejecutar el script de PowerShellAksEdgeQuickStart-v2.ps1
. Reemplace los valores de[SUBSCRIPTION_NAME]
,[SUBSCRIPTION_ID]
,[TENANT_ID]
,[RESOURCE_GROUP_NAME]
,[SERVICE_PRINCIPAL_ID]
y[SERVICE_PRINCIPAL_PASSWORD]
por los valores que anotó anteriormente:$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"
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 10 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:- 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.
- Invoca la función
Connect-AideArc
que realiza las siguientes tareas:- Instala el agente de Azure Connected Machine y conecta la máquina host a Arc para servidores.
- Conecta el clúster implementado en Arc para Kubernetes conectado.
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/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
- En la carpeta de trabajo de la máquina virtual
Confirme que la implementación se realizó correctamente; para ello, ejecute el comando siguiente:
kubectl get nodes -o wide kubectl get pods -A -o wide
En la captura de pantalla de ejemplo siguiente se muestra que el nodo Linux está listo y los pods se están ejecutando:
Visualización del clúster en Azure Portal
Puede ver el clúster en Azure Portal si navega al grupo de recursos
aksedge-training
y después selecciona el recursomyVM-k3s
Kubernetes: Azure Arc.En el panel izquierdo, seleccione la opción Espacios de nombres, en Recursos de Kubernetes (versión preliminar).
Debe iniciar sesión con un token de portador para ver los recursos de Kubernetes. Para obtener el token, ejecute el siguiente comando en la línea de comandos de PowerShell de la máquina virtual:
Get-AksEdgeManagedServiceToken
Ahora puede ver los recursos en el clúster. Las Cargas de trabajo muestran los pods que se ejecutan en el clúster.