Compartir a través de


Implementaciones completas de Kubernetes en AKS Edge Essentials

Precaución

La implementación completa en varias máquinas es actualmente una característica experimental. Estamos trabajando activamente en esta característica.

Puede configurar un clúster de AKS Edge Essentials para que se ejecute en varias máquinas para admitir una arquitectura de microservicios distribuida. AKS Edge Essentials está diseñado para configuraciones estáticas y no habilita la creación o eliminación dinámicas de máquinas virtuales ni la administración del ciclo de vida del clúster, a diferencia de AKS en la nube o AKS HCI. AKS Edge Essentials solo tiene una máquina virtual Linux por cada máquina, junto con una máquina virtual Windows, en caso necesario. Cada máquina virtual tiene una asignación estática de núcleos de RAM, almacenamiento y CPU físicos asignados en tiempo de instalación. En una implementación de varios nodos, una de las máquinas es la máquina principal con el nodo de control de Kubernetes y las demás máquinas serán máquinas secundarias con los nodos de trabajo. En este escenario de implementación, configuraremos el clúster K8S mediante un conmutador externo. Con esta configuración, puede ejecutar kubectl desde otra máquina de la red, evaluar el rendimiento de la carga de trabajo en un conmutador externo, etc.

Requisitos previos

Configure la máquina como se describe en el artículo Configuración de la máquina .

Paso 1: parámetros completos de configuración de implementación de Kubernetes

Puede generar los parámetros necesarios para crear un clúster escalable mediante el siguiente comando:

New-AksEdgeConfig -DeploymentType ScalableCluster -outFile .\aksedge-config.json | Out-Null

Este comando crea un archivo de configuración denominado aksedge-config.json, que incluye la configuración necesaria para crear un clúster escalable con un nodo de Linux. El archivo se crea en el directorio de trabajo actual. Consulte Configuración json de implementación para obtener descripciones detalladas de los parámetros de configuración (como la configuración del proxy).

Consulte los ejemplos siguientes para obtener más opciones para crear el archivo de configuración.

Los parámetros clave que se van a tener en cuenta para una implementación escalable de Kubernetes son:

  • Información de conmutador externo: una implementación completa usa un conmutador externo para habilitar la comunicación entre los nodos. Debe especificar el MachineConfigType.NetworkConnection.AdapterName parámetro como Ethernet o Wi-Fi:

    # get the list of available adapters in the machine
    Get-NetAdapter -Physical | Where-Object { $_.Status -eq 'Up' }
    

    Si ha creado un conmutador externo en Hyper-V, puede especificar los detalles de vswitch en el archivo de configuración. Si no crea un conmutador externo en el administrador de Hyper-V y ejecuta el New-AksEdgeDeployment comando , AKS Edge Essentials crea automáticamente un conmutador externo denominado aksedgesw-ext y lo usa para la implementación.

    Nota:

    En esta versión, hay un problema conocido con la creación automática de un conmutador externo con el New-AksEdgeDeployment comando si usa un adaptador Wi-Fi para el conmutador. En este caso, cree primero el conmutador externo mediante el administrador de Hyper-V - Virtual Switch Manager, asigne el conmutador al adaptador wi-fi y, a continuación, proporcione los detalles del modificador en el JSON de configuración, tal como se describe a continuación.

    Captura de pantalla del administrador de conmutadores de Hyper-V.

  • Direcciones IP: debe asignar direcciones IP libres de la red para el plano de control, los servicios de Kubernetes y los nodos (VM). Consulte la introducción a las redes de AKS Edge Essentials para obtener más información. Por ejemplo, en una red local con el intervalo de direcciones IP 192.168.1.0/24, es posible que tenga 1.151 y versiones posteriores fuera del ámbito DHCP y, por lo tanto, es probable que sea libre. AKS Edge Essentials solo admite actualmente direcciones IPv4. Idealmente, sabrá qué direcciones IP gratuitas puede usar; Sin embargo, puede usar el script AksEdge-ListUsedIPv4s del repositorio de GitHub para ver las direcciones IP que están actualmente en uso, para evitar el uso de esas direcciones IP en la configuración. Los parámetros siguientes deberán proporcionarse en la Network sección del archivo de configuración: ControlPlaneEndpointIp, , Ip4GatewayAddressIp4PrefixLength, ServiceIPRangeSize, y ServiceIPRangeStartDnsServers.

Importante

Kubernetes pod cidr es 10.42.0.0/16 para K3s y 10.244.0.0/24 para K8s. Kubernetes service cidr es 10.43.0.0/16 para K3s y 10.96.0.0/12 para K8s.

  • El Network.NetworkPlugin valor de forma predeterminada es flannel. Flannel es el CNI predeterminado para un clúster K3S. En un clúster K8S, cambie a NetworkPlugin calico.
  • Además de los parámetros anteriores, puede establecer los parámetros siguientes según la configuración de implementación, como se describe aquí: LinuxNode.CpuCount, , LinuxNode.MemoryInMBLinuxNode.DataSizeInGB, WindowsNode.MemoryInMBWindowsNode.CpuCountWindowsNode.Ip4AddressLinuxNode.Ip4Addressy . Init.ServiceIPRangeSizeNetwork.InternetDisabled

Paso 2: validar el archivo de configuración

Después de actualizar el archivo aksedge-config.json , ejecute la herramienta AksEdgePrompt. Esta herramienta abre una ventana de PowerShell con privilegios elevados con los módulos cargados. A continuación, ejecute el siguiente comando para validar los parámetros de red mediante el Test-AksEdgeNetworkParameters cmdlet :

Test-AksEdgeNetworkParameters -JsonConfigFilePath .\aksedge-config.json

Paso 3: creación de un clúster de implementación completo

Si Test-AksEdgeNetworkParameters devuelve true, está listo para crear la implementación. Puede crear la implementación mediante el New-AksEdgeDeployment cmdlet :

New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json

El New-AksEdgeDeployment cmdlet recupera automáticamente el archivo kubeconfig.

Paso 4: validar la implementación

kubectl get nodes -o wide
kubectl get pods --all-namespaces -o wide

A continuación se muestra una captura de pantalla de un clúster de Kubernetes:

Diagrama que muestra todos los pods en ejecución.

Paso 5: agregar un nodo de trabajo de Windows (opcional)

Precaución

Los nodos de trabajo de Windows son una característica experimental en esta versión. Estamos trabajando activamente en esta característica.

Si desea agregar un nodo de Windows a una máquina solo Linux existente, puede ejecutar:

New-AksEdgeScaleConfig -ScaleType AddNode -NodeType Windows -WindowsNodeIp "xxx" -outFile .\ScaleConfig.json | Out-Null

También puede especificar parámetros como CpuCount o MemoryInMB para la máquina virtual Windows aquí.

Puede usar el archivo de configuración generado y ejecutar el siguiente comando para agregar el nodo de Windows.

Add-AksEdgeNode -JsonConfigFilePath .\ScaleConfig.json

Configuración de ejemplo para diferentes opciones de implementación

Asignar recursos a los nodos

Para conectarse a Arc e implementar las aplicaciones con GitOps, asigne cuatro CPU o más para LinuxNode.CpuCount (potencia de procesamiento), 4 GB o más para LinuxNode.MemoryinMB (RAM) y asigne un número mayor que 0 a ServiceIpRangeSize. Aquí, asignamos 10 direcciones IP para los servicios de Kubernetes:

{
    "Init": {
        "ServiceIpRangeSize": 10,
        "ServiceIPRangeStart": "192.168.1.151"
    },
    "Network": {
        "ControlPlaneEndpointIp": "192.168.1.191",
        "NetworkPlugin": "calico",
        "Ip4GatewayAddress": "192.168.1.1",
        "Ip4PrefixLength": 24,
        "DnsServers": ["192.168.1.1"]
    },
    "Machines": [
        {
            "NetworkConnection": {
                "AdapterName": "Ethernet"
            },
            "LinuxNode": {
                "CpuCount": 4,
                "MemoryInMB": 4096,
                "DataSizeInGB": 20,
                "Ip4Address": "192.168.1.171"
            }
        }
    ]
}

Creación de nodos de Linux y Windows

Para ejecutar el plano de control de Linux y el nodo de trabajo de Windows en una máquina, cree el archivo de configuración mediante el siguiente comando:

New-AksEdgeConfig -DeploymentType ScalableCluster -NodeType LinuxAndWindows -outFile .\aksedge-config.json | Out-Null

Cree la implementación con el comando :

New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json
{
  "Machines": [
      {
          "NetworkConnection": {
              "AdapterName": "Ethernet"
          },
          "LinuxNode": {
              "CpuCount": 4,
              "MemoryInMB": 4096,
              "DataSizeInGB": 20,
              "Ip4Address": "192.168.1.171"
          },
          "WindowsNode": {
              "CpuCount": 2,
              "MemoryInMB": 4096,
              "Ip4Address": "192.168.1.172"
          }
      }
  ]
}

Pasos siguientes