Preparación del entorno de virtualización anidado para AKS Edge Essentials
En este artículo se describe cómo configurar un entorno de virtualización anidado para implementar un clúster de Azure Kubernetes Service (AKS) Edge Essentials.
Nota:
Se admite la implementación de AKS Edge Essentials sobre un entorno de virtualización anidado en VMware ESXi. No se admiten otras implementaciones de virtualización anidadas para escenarios de producción y se limitan a fines de desarrollador. En esta guía se da por supuesto que usa el hipervisor de Hyper-V. No se admite el uso de un hipervisor que no sea de Microsoft, como KVM.
Requisitos previos
- Consulte los requisitos del sistema.
- Requisitos del sistema operativo: instale Windows 10/11 IoT Enterprise/Enterprise/Pro en la máquina y active Windows. Se recomienda usar la versión 22H2 del cliente más reciente (compilación del sistema operativo 19045) o Server 2022 (compilación del sistema operativo 20348). Puedes descargar una versión de Windows 10 aquí o Windows 11 aquí.
Implementación en una máquina virtual Windows en VMware ESXi
Las versiones de VMware ESXi 7.0 y 8.0 pueden hospedar AKS Edge Essentials sobre una máquina virtual Windows.
Para configurar AKS Edge Essentials en una máquina virtual Windows VMware ESXi, siga estos pasos:
- Cree una máquina virtual Windows en el host de VMware ESXi. Para obtener más información sobre la implementación de máquinas virtuales de VMware, consulte VMware: implementación de máquinas virtuales.
Nota:
Si va a crear una máquina virtual windows 11, asegúrese de que cumple los requisitos mínimos de Microsoft para ejecutar Windows 11. Para obtener más información sobre la compatibilidad de VMware con máquinas virtuales Windows 11, consulte Instalación de Windows 11 como SO invitado en VMware.
- Desactive la máquina virtual creada en el paso anterior.
- Seleccione la máquina virtual Windows y, a continuación, Edit settings.
- Busque Hardware virtualization y active Expose hardware assisted virtualization to the guest OS.
- Seleccione Save e inicie la máquina virtual.
- Instale el hipervisor de Hyper-V. Si usa un cliente Windows, asegúrese de instalar Hyper-V en Windows 10. Si usa Windows Server, asegúrese de instalar el rol de Hyper-V.
Implementación en máquinas virtuales de Azure
Si ejecuta AKS Edge Essentials sobre una máquina virtual de Azure, asegúrese de usar una unidad de proceso (ACU) de Azure que admita la virtualización anidada. Para más información, consulte Unidad de proceso (ACU) de Azure. Además, las máquinas virtuales de Azure no admiten el uso de un conmutador virtual externo, por lo que las implementaciones de AKS Edge Essentials en la parte superior del sistema operativo host de máquina virtual se limitan a clústeres de una sola máquina.
Entorno de implementación
En esta sección se describe la arquitectura anidada, donde se resaltan los componentes principales y la configuración necesarios. Los niveles de virtualización descritos más adelante en este artículo son:
- Sistema operativo host L0: sistema operativo host de Windows. Este sistema operativo puede ejecutarse sin sistema operativo o como una máquina virtual, pero en este artículo, el sistema operativo host L0 es el que crea las máquinas virtuales L1 de Windows anidadas.
- Máquina virtual L1: máquina virtual Windows que se ejecuta sobre el sistema operativo host de Windows L0. Esta máquina virtual tiene la instalación de AKS Edge Essentials.
- Máquina virtual L2: MÁQUINA virtual anidada de AKS Edge Essentials (Linux o Windows) que se ejecuta sobre la máquina virtual Windows L1.
Puede configurar un entorno anidado mediante un conmutador virtual interno o externo. Sin embargo, en este artículo se supone que usa un conmutador virtual interno. Las direcciones IP de la máquina Windows L0 y las máquinas virtuales L1/L2 pueden cambiar en función del escenario de red. En este artículo se da por supuesto que usa la familia de direcciones IP 172.20.1.0/24 .
Además, la implementación de nodos de Windows de AKS Edge Essentials es opcional y afecta a los requisitos de memoria asignados. En este artículo se describe una implementación solo de Linux, pero puede agregar los nodos de Windows agregando la configuración adecuada a los archivos JSON de implementación.
Sugerencia
Si usa conmutadores virtuales externos para la implementación, asegúrese de usar los adaptadores de red correctos y las asignaciones de direcciones IP.
En el diagrama anterior se muestran las distintas máquinas virtuales y componentes de esta arquitectura anidada.
Dispositivo o máquina virtual | SISTEMA OPERATIVO | Nivel | Elemento primario | Memoria | Dirección IP |
---|---|---|---|---|---|
Sistema operativo host de Windows | Windows | L0 | - | 32/64 GB | 172.20.1.1 |
Windows-VM-1 | Windows | L1 | Sistema operativo host de Windows | 8/16 GB | 172.20.1.2 |
Windows-VM-2 | Windows | L1 | Sistema operativo host de Windows | 8/16 GB | 172.20.1.3 |
AKS-Edge-Linux-VM-1 | CBL-Mariner | L2 | Windows-VM-1 | 4 GB | 172.20.1.4 |
AKS-Edge-Windows-VM-1 (opcional) | Windows | L2 | Windows-VM-1 | 4 GB | 172.20.1.5 |
AKS-Edge-Linux-VM-2 | CBL-Mariner | L2 | Windows-VM-2 | 4 GB | 172.20.1.6 |
AKS-Edge-Windows-VM-2 (opcional) | Windows | L2 | Windows-VM-2 | 4 GB | 172.20.1.7 |
Configuración de máquinas virtuales anidadas
La siguiente guía es un ejemplo de asignación de direcciones IP. Puede usar su propia asignación en función del entorno de red y los requisitos. También se sugieren convenciones de nomenclatura para máquinas virtuales y asignaciones de hardware virtual, pero puede usar su propia configuración.
Abra una sesión de PowerShell con privilegios elevados.
Cree un conmutador virtual interno:
New-VMSwitch -Name "AKS-Int" -SwitchType Internal
Si ha creado el modificador correctamente, debería ver algo similar a la siguiente salida:
Name SwitchType NetAdapterInterfaceDescription ---- ---------- ------------------------------ AKS-Int Internal
Asigne una dirección IP al conmutador virtual AKS-Int . En este ejemplo se usa la red 172.20.1.0/24 . El sistema operativo host de Windows usa esta dirección IP del conmutador virtual para comunicarse con las otras máquinas virtuales y los nodos de AKS Edge Essentials:
$ifIndex = (Get-NetAdapter -Name "vEthernet (AKS-Int)").ifIndex New-NetIPAddress –IPAddress "172.20.1.1" -PrefixLength "24" -InterfaceIndex $ifIndex
Cree una tabla NAT para conectar el conmutador virtual interno y los dispositivos conectados a la red interna con la red externa o de Internet:
New-NetNat -Name "AKS-EE-Int-Network" -InternalIPInterfaceAddressPrefix "172.20.1.0/24"
Con el Administrador de Hyper-V, cree la primera máquina virtual Windows y asígneles el nombre Windows-VM-1. Para obtener más información sobre la creación de máquinas virtuales, consulte Virtualización de Windows Server. Durante la configuración de la máquina virtual, asegúrese de configurar correctamente los parámetros siguientes:
- Procesadores: número de procesadores virtuales: 4
- Memoria: RAM: 8192 MB
- Adaptador de red: conmutador virtual: AKS-Int
Cuando finalice la instalación y configuración de Windows, desactive la máquina virtual Windows-VM-1 .
Habilite la virtualización anidada para Windows-VM-1. Para obtener más información sobre la virtualización anidada, consulte Ejecución de Hyper-V en una máquina virtual con virtualización anidada:
Set-VMProcessor -VMName <windows-vm-name> -ExposeVirtualizationExtensions $true
Habilitación de la suplantación de mac para Windows-VM-1:
Get-VMNetworkAdapter -VMName <windows-vm-name> | Set-VMNetworkAdapter -MacAddressSpoofing On
Active la máquina virtual Windows-VM-1 y conéctese mediante la opción Hyper-V Connect .
Dentro de la máquina virtual Windows-VM-1 , abra una sesión de PowerShell con privilegios elevados.
Compruebe los adaptadores conectados a la máquina virtual. Busque el nombre del adaptador <>Ethernet conectado. Por ejemplo, Ethernet 2:
ipconfig
Debería ver algo parecido a los siguiente:
PS C:\Windows\system32> ipconfig Windows IP Configuration Ethernet adapter Ethernet 2: Connection-specific DNS Suffix . : mshome.net Link-local IPv6 Address . . . . . : fe80::f4b3:63b3:20d0:2e60%12 Autoconfiguration IPv4 Address. . : 169.254.233.233 Subnet Mask . . . . . . . . . . . : 255.255.0.0 Default Gateway . . . . . . . . . : Ethernet adapter vEthernet (Default Switch): Connection-specific DNS Suffix . : Link-local IPv6 Address . . . . . : fe80::545e:7d5:812b:c17b%18 IPv4 Address. . . . . . . . . . . : 172.21.144.1 Subnet Mask . . . . . . . . . . . : 255.255.240.0 Default Gateway . . . . . . . . . :
Obtenga ifIndex del adaptador Ethernet con el nombre del paso anterior:
$ifIndex = (Get-NetAdapter -Name "<name>").ifIndex
Configure la dirección IP estática 172.20.1.2 y la dirección IP de puerta de enlace 172.20.1.1 y el servidor DNS 172.20.1.1:
Sugerencia
Si usa una máquina virtual de Azure, use el servidor DNS del sistema operativo host de Windows (L0). Use el
ipconfig /all
comando para obtener la dirección del servidor DNS. Compruebe que puede obtener acceso a Internet mediante el explorador web. Si no tiene acceso, compruebe si el servidor DNS está configurado correctamente:New-NetIPAddress –IPAddress "172.20.1.2" -DefaultGateway "172.20.1.1" -PrefixLength "24" -InterfaceIndex $ifIndex Set-DNSClientServerAddress –InterfaceIndex $ifIndex –ServerAddresses "172.20.1.1"
Configure la máquina virtual Windows-VM-1 siguiendo el procedimiento Preparar las máquinas para AKS Edge Essentials .
Instale todos los requisitos previos de AKS Edge Essentials para la máquina virtual Windows-VM-1 . Para más información sobre los requisitos previos, consulte Requisitos y matriz de soporte técnico de AKS Edge Essentials:
Install-AksEdgeHostFeatures
Cree el archivo de configuración de implementación a escala completa de AKS Edge Essentials. Una vez creado el JSON, agregue los parámetros necesarios. Asegúrese de cambiar el adaptador de red para la creación de conmutadores virtuales externos, el servidor DNS, la memoria asignada y las direcciones IP estáticas correctas. Para más información, consulte Implementaciones completas de Kubernetes en AKS Edge Essentials:
New-AksEdgeConfig -NodeType Linux -DeploymentType ScalableCluster
Implemente la implementación a escala completa de AKS Edge Essentials mediante el archivo JSON de configuración creado en el paso anterior:
New-AksEdgeDeployment -JsonConfigFilePath .\AksEdgeDeployConfigTemplate.json
Habilite el ping al tráfico ICMP en la máquina virtual AKS-Edge-VM-1 :
Invoke-AksEdgeNodeCommand -NodeType "Linux" -command "sudo iptables -A INPUT -p ICMP -j ACCEPT"
Haga ping a AKS-Edge-VM-1 desde la máquina virtual Windows-VM-1 :
ping 172.20.1.4
Haga ping a AKS-Edge-VM-1 desde el sistema operativo host de Windows:
ping 172.20.1.4
Advertencia
Si se produce un error en las solicitudes de ping a la máquina virtual AKS-Edge-VM-1 , revise la configuración de IP y solucione los problemas de las conexiones de red.
En Windows-VM-1, obtenga el archivo JSON scaleConfig que se usará en Windows-VM-2:
New-AksEdgeScaleConfig -NodeType Linux -ScaleType AddMachine -LinuxNodeIp <VM2-Linux-Node-IP>
Cree la máquina virtual Windows-VM-2 . Repita los pasos del 4 al 14 con los nuevos parámetros windows-VM-2 :
- Nombre de máquina virtual: Windows-VM-2
- Dirección IP: 172.20.1.3
- Procesadores: número de procesadores virtuales: 4
- Memoria: 8192 MB
- Adaptador de red (conmutador virtual): AKS-Int
- Dirección de puerta de enlace IP: 172.20.1.1
- Dirección del servidor DNS: 172.20.1.1
Pruebe el ping desde Windows-VM-2 a AKS-Edge-VM-1:
ping 172.20.1.4
Advertencia
Si se produce un error en las solicitudes de ping a AKS-Edge-VM-1 , revise la configuración de IP y solucione los problemas de las conexiones de red.
Configure la máquina virtual Windows-VM-2 siguiendo el procedimiento Preparar las máquinas para AKS Edge Essentials .
Instale todos los requisitos previos de AKS Edge Essentials para la máquina virtual Windows-VM-2 . Para más información sobre los requisitos previos, consulte Requisitos y matriz de soporte técnico de AKS Edge Essentials:
Install-AksEdgeHostFeatures
Conéctese a la máquina virtual Windows-VM-1 y, con una sesión de PowerShell con privilegios elevados, obtenga la configuración de unión al clúster de AKS Edge:
New-AksEdgeScaleConfig -NodeType Linux -ScaleType AddMachine -LinuxNodeIp <AKS-Edge-Linux-VM-2>
Copie el archivo de configuración de escalado de AKS Edge Essentials desde Windows-VM-1 y modifíquelo con los parámetros adecuados. Para obtener más información, consulte Escalado horizontal en varias máquinas.
Implemente AKS-Edge-VM-2 en Window-VM-2 mediante el archivo JSON de configuración de escalado del paso anterior:
New-AksEdgeDeployment -JsonConfigFilePath <scale-config-json>
Compruebe que el nodo se agregó al clúster. En cualquier nodo del clúster, ejecute el siguiente cmdlet:
kubectl get nodes
Si todo se configuró correctamente, debería ver los dos nodos de Linux que se ejecutan en el clúster:
PS C:\> kubectl get nodes NAME STATUS ROLES AGE VERSION windows-vm1-ledge Ready control-plane,etcd,master 3m45s v1.24.3+k3s- windows-vm2-ledge Ready control-plane,etcd,master 10m25s v1.24.3+k3s-
Nota:
Para obtener una lista de las versiones de Kubernetes admitidas actualmente en K3s y K8s, consulte la tabla en Descarga de AKS Edge Essentials.
Pasos siguientes
- Adición de cargas de trabajo mediante la implementación de aplicaciones
- Solución de problemas de la implementación