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 comoEthernet
oWi-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 denominadoaksedgesw-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.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
, ,Ip4GatewayAddress
Ip4PrefixLength
,ServiceIPRangeSize
, yServiceIPRangeStart
DnsServers
.
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 esflannel
. Flannel es el CNI predeterminado para un clúster K3S. En un clúster K8S, cambie aNetworkPlugin
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.MemoryInMB
LinuxNode.DataSizeInGB
,WindowsNode.MemoryInMB
WindowsNode.CpuCount
WindowsNode.Ip4Address
LinuxNode.Ip4Address
y .Init.ServiceIPRangeSize
Network.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:
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"
}
}
]
}