Implementación de un clúster de Kubernetes en una red virtual personalizada en Azure Stack Hub
Los clústeres de Kubernetes se pueden implementar mediante el motor de Azure Kubernetes Service (AKS) en una red virtual personalizada. En este artículo se describe cómo encontrar la información que necesita en la red virtual. El artículo contiene pasos para calcular las direcciones IP que usa el clúster, establecer las vales en el modelo de API y establecer la tabla de rutas y el grupo de seguridad de red.
El clúster de Kubernetes en Azure Stack Hub mediante el motor de AKS usa el complemento de red kubenet. El motor de AKS en Azure Stack Hub también admite el complemento de red de Azure CNI.
- Para ver una explicación acerca del complemento de redes kubenet en Azure, consulte Uso de redes kubenet con intervalos de direcciones IP propios en Azure Kubernetes Service (AKS).
- Para ver una explicación del complemento de redes de Azure CNI en Azure, consulte Configuración de redes de Azure CNI en Azure Kubernetes Service (AKS).
Consideraciones al crear una red virtual personalizada
- La red virtual personalizada debe estar en la misma suscripción que todos los demás componentes del clúster de Kubernetes.
- El grupo de nodos del plano de control y el grupo de nodos del agente deben estar en la misma red virtual. Se pueden implementar los nodos en subredes diferentes dentro de la misma red virtual.
- La subred del clúster de Kubernetes debe usar un intervalo IP dentro del espacio del intervalo IP de red virtual personalizado. Consulte Obtención del bloque de direcciones IP.
- Tenga en cuenta que el tamaño recomendado de las subredes de nodo depende del tipo de complemento de red que se usa. Como guía general, Azure CNI requiere un mayor número de direcciones IP para la subred que admite los grupos de nodos de agente que kubenet. Consulte los siguientes ejemplos de kubenet y de Azure CNI.
- El espacio de direcciones
169.254.0.0/16
no se puede usar en VNET personalizados para clústeres de Kubernetes.
Creación de una red virtual personalizada
Debe tener una red virtual personalizada en su instancia de Azure Stack Hub. Para más información, consulte Inicio rápido: Creación de una red virtual mediante Azure Portal.
Cree una subred en la red virtual. Debe obtener el identificador de recurso de subred y el intervalo de direcciones IP, que se usan en el modelo de API al implementar el clúster:
Abra el portal de usuarios de Azure Stack Hub en la instancia de Azure Stack Hub.
Seleccione Todos los recursos.
Escriba el nombre de la red virtual en el cuadro de búsqueda.
Seleccione Subredes>+ Subredes para agregar una subred.
Especifique los valores correspondientes en los campos Nombre e Intervalo de direcciones, para lo que debe usar la notación CIDR. Seleccione Aceptar.
Seleccione Propiedades en la hoja Redes virtuales. Copie el valor del campo Id. de recurso y agregue
/subnets/<nameofyoursubnect>
. Este valor se usa como valor para la clave devnetSubnetId
en el modelo de API del clúster. El identificador de recurso de la subred usa el formato siguiente:/subscriptions/SUB_ID/resourceGroups/RG_NAME/providers/Microsoft.Network/virtualNetworks/VNET_NAME/subnets/SUBNET_NAME
.Seleccione Subredes en la hoja Redes virtuales. Seleccione el nombre de la subred, por ejemplo,
control-plane-sn
. No asocie la subred a un grupo de seguridad de red (NSG).En la hoja de la subred, anote el intervalo de direcciones (bloque CIDR) de cada subred.
Consideraciones para seleccionar un espacio de direcciones
Al crear una red virtual personalizada, especifique el espacio de direcciones IP de la red y un intervalo de direcciones IP para cada subred. Tenga en cuenta los siguientes factores al elegir los espacios de direcciones y los intervalos que se usarán en el clúster de Kubernetes:
- Los espacios de direcciones superpuestos pueden dar lugar a conflictos de direcciones IP o errores de comunicación. Para reducir el riesgo de que las direcciones IP se superpongan, elija un espacio de direcciones único para la nueva red virtual.
- Los espacios de direcciones en los intervalos
10/8
,172.16/12
y192.168/16
se usan a menudo para redes privadas, y la infraestructura existente del centro de datos también los puede usar. Si las aplicaciones de Kubernetes usan recursos del centro de datos, reduzca el riesgo de conflictos mediante la elección de un espacio de direcciones para la red virtual personalizada que sea diferente del espacio de direcciones del centro de datos. - Se recomienda usar una subred dedicada para el clúster de Kubernetes.
- Si usa varias redes virtuales existentes, considere la posibilidad de usar diferentes espacios de direcciones en cada red si piensa usar el emparejamiento de redes virtuales. Los espacios de direcciones superpuestos pueden afectar a la capacidad de habilitar el emparejamiento.
Obtención del bloque de direcciones IP
El motor de AKS admite la implementación en una red virtual existente. Cuando se implementa en una red virtual existente, el clúster usa bloques de direcciones consecutivas para nodos de agente, nodos del plano de control, servicios de clúster y contenedores (pods). Cada bloque de direcciones se puede traducir en una subred dentro de la red virtual. Todos los bloques de direcciones de la implementación del clúster deben formar parte del espacio de direcciones de red virtual general. Elegir bloques de direcciones fuera del espacio de direcciones de la red virtual puede dar lugar a problemas de conectividad.
Se requieren un mínimo de tres bloques de direcciones al configurar un clúster de Kubernetes:
- Bloque de direcciones de nodos: bloque de direcciones que se usa para asignar direcciones a los nodos del clúster. Este valor puede ser un único bloque de direcciones para todos los nodos de clúster o puede ser bloques independientes (subredes) para grupos de agentes y planos de control. Al seleccionar el intervalo de direcciones de este bloque, debe tener en cuenta el número de nodos del clúster. Para Azure CNI, los nodos y los contenedores obtienen sus direcciones del mismo bloque de direcciones, teniendo en cuenta el número de contenedores que desea implementar en el clúster al elegir el intervalo de direcciones al usar Azure CNI.
- Bloque de direcciones de servicios: bloque de direcciones del que los servicios implementados en el clúster de Kubernetes obtienen su dirección de clúster. Cuando seleccione el intervalo de direcciones para este bloque, tenga en cuenta el número máximo de servicios que piensa ejecutar en el clúster.
- Bloque de direcciones del clúster: bloque de direcciones del que los pods obtienen su dirección de clúster. Cuando seleccione el intervalo de direcciones para este bloque, tenga en cuenta el número máximo de pods que piensa ejecutar en el clúster. Como se mencionó anteriormente, con Azure CNI, los bloques de direcciones de clúster y nodos son los mismos.
Además de los bloques de direcciones, para los nodos del plano de control debe establecer dos valores más. Debe conocer el número de direcciones IP que se van a reservar para su clúster y la primera IP estática consecutiva dentro del espacio IP de la subred. El motor de AKS requiere un intervalo de hasta 16 direcciones IP sin usar cuando se usan varios nodos del plano de control. El clúster usa una dirección IP para cada plano de control hasta cinco nodos del plano de control. El motor de AKS también requiere las 10 siguientes direcciones IP después del último nodo del plano de control para la reserva de espacio de direcciones IP. Por último, después de los nodos del plano de control y la reserva de capacidad, el equilibrador de carga utiliza otra dirección IP, sumando un total de 16. Al colocar su bloque de direcciones IP, la subred requiere las siguientes asignaciones de las direcciones IP existentes:
- Las cuatro primeras direcciones IP y la última dirección IP están reservadas y no se pueden usar en ninguna subred de Azure.
- Debe dejarse abierto un búfer de 16 direcciones IP.
- El valor de la primera dirección IP del clúster debe estar hacia el final del espacio de direcciones para evitar conflictos de IP. Si es posible, asigne la
firstConsecutiveStaticIP
propiedad a una dirección IP cerca del final del espacio de direcciones IP disponible en la subred.
Por ejemplo, para un clúster con tres nodos de plano de control, si usa una subred con 256 direcciones, por ejemplo 10.100.0.0.0/24, debe establecer la primera dirección IP estática consecutiva antes de 239. En la tabla siguiente se muestran las direcciones y consideraciones:
Intervalo para la subred /24 | Number | Nota: |
---|---|---|
172.100.0.0 - 172.100.0.3 | 4 | Reservado en la subred de Azure. |
172.100.0.224-172.100.0.238 | 14 | Recuento de direcciones IP de un clúster definido por el motor de AKS. 3 direcciones IP para los 3 nodos del plano de control 10 direcciones IP para la capacidad de aumento 1 dirección IP para el equilibrador de carga |
172.100.0.238 - 172.100.0.254 | 16 | Búfer de 16 direcciones IP. |
172.100.0.255 | 1 | Reservado en la subred de Azure. |
En este ejemplo, la propiedad firstConsecutiveStaticIP
es 172.100.0.224
.
Para subredes más grandes; por ejemplo, /16
con más de 60 mil direcciones, es posible que no le resulte práctico establecer las asignaciones ip estáticas al final del espacio de red. Establezca el intervalo de direcciones IP estáticas del clúster fuera de las 24 primeras direcciones del espacio de IP, con el fin de que el clúster pueda ser resistente al reclamar direcciones.
Ejemplo de bloques de direcciones de Kubenet
En el ejemplo siguiente, puede ver cómo estas diversas consideraciones rellenan el espacio de direcciones de la red virtual de un clúster mediante el complemento de red kubenet con subredes dedicadas para los grupos de nodos del plano de control y del agente con tres nodos por grupo.
Espacio de direcciones de red virtual: 10.100.0.0/16.
Bloque de direcciones (subred) | CIDR | Intervalo IP | Recuento de IP (disponible) |
---|---|---|---|
Bloque de nodos del plano de control | 10.100.0.0/24 | 10.100.0.0 - 10.100.0.255 | 255 - 4 reservados = 251 |
Bloques de nodos de agentes | 10.100.1.0/24 | 10.100.1.0 - 10.100.1.255 | 255 - 4 reservados = 251 |
Bloque de servicios | 10.100.16.0/20 | 10.100.16.0 - 10.100.31.255 | 4096 - 5 reservados = 4091 |
Bloque de clústeres | 10.100.128.0/17 | 10.100.128.0 - 10.100.255.255 | 32 768 - 5 reservados = 32 763 |
En este ejemplo, la propiedad firstConsecutiveStaticIP
es 10.100.0.239
.
Ejemplo de bloques de direcciones de Azure CNI
En el ejemplo siguiente, puede ver cómo estas diversas consideraciones rellenan el espacio de direcciones de la red virtual de un clúster mediante el complemento de red Azure CNI con subredes dedicadas para los grupos de nodos del plano de control y del agente con tres nodos por grupo.
Espacio de direcciones de red virtual: 172.24.0.0/16.
Nota:
En su entorno, si el intervalo de IP pública está dentro de CIDR10.0.0.0/8, use kubenet como complemento de red.
Bloque de direcciones (subred) | CIDR | Intervalo IP | Recuento de IP (disponible) |
---|---|---|---|
Bloque de nodos del plano de control | 172.24.0.0/24 | 172.24.0.0 - 172.24.0.255 | 255 - 4 reservados = 251 |
Nodos de agente y bloque de clúster | 172.24.128.0/17 | 172.24.128.0 - 172.24.255.255 | 32 768 - 5 reservados = 32 763 |
Bloque de servicios | 172.24.16.0/20 | 172.24.16.0 - 172.24.31.255 | 4096 - 5 reservados = 4091 |
En este ejemplo, la propiedad firstConsecutiveStaticIP
sería 172.24.0.239
.
Actualización del modelo de API
Actualice el modelo de API que se usa para implementar el clúster desde el motor de AKS en la red virtual personalizada.
En masterProfile, establezca los siguientes valores:
Campo | Ejemplo | Descripción |
---|---|---|
vnetSubnetId | /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/control-plane-sn |
Especifique el identificador de la ruta de acceso de Azure Resource Manager de la subred. Este valor se asigna al bloque de direcciones de nodos del plano de control. |
firstConsecutiveStaticIP | 10.100.0.239 | Asigne a la propiedad de configuración firstConsecutiveStaticIP una dirección IP que se encuentre cerca del final del espacio de direcciones IP disponible en la subred deseada. firstConsecutiveStaticIP solo se aplica al grupo de nodos del plano de control. |
En agentPoolProfiles, establezca los valores siguientes:
Campo | Ejemplo | Descripción |
---|---|---|
vnetSubnetId | /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/agents-sn |
Especifique el identificador de la ruta de acceso de Azure Resource Manager de la subred. Este valor se asigna al bloque de direcciones de nodos del agente. |
En orchestratorProfile, busque kubernetesConfig y establezca el siguiente valor:
Campo | Ejemplo | Descripción |
---|---|---|
clusterSubnet | 10.100.128.0/17 |
Subred IP utilizada para asignar direcciones IP a las interfaces de red los pod. Este valor se asigna al bloque de direcciones del clúster. La subred debe estar en el espacio de direcciones de la red virtual. Con Azure CNI habilitado, el valor predeterminado es 10.240.0.0/12. Sin Azure CNI, el valor predeterminado es 10.244.0.0/16. Use /16 en lugar de una subred /24. Si usa /24, esta subred solo se asigna a un nodo. El otro nodo no obtiene asignada una red POD, ya que se agotó el espacio IP, por lo que no están listos en el clúster. |
serviceCidr | 10.100.16.0/20 |
Subred IP que se utiliza para asignar las direcciones IP de los servicios implementados en el clúster. Este valor se asigna al bloque de servicios de clúster. |
dnsServiceIP | 10.100.16.10 |
Dirección IP que se va a asignar al servicio DNS del clúster. La dirección debe procede de la subred serviceCidr. Este valor se debe establecer al especificar serviceCidr. El valor predeterminado es la dirección .10 de la subred serviceCidr. |
Por ejemplo, si usa kubenet:
Con un espacio de direcciones de red de 10.100.0.0/16
, donde la subred para control-plane-sn
es 10.100.0.0/24
y agents-sn
es 10.100.1.0/24
"masterProfile": {
...
"vnetSubnetId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/control-plane-sn",
"firstConsecutiveStaticIP": "10.100.0.239",
...
},
...
"agentPoolProfiles": [
{
...
"vnetSubnetId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/agents-sn",
...
},
...
"kubernetesConfig": [
{
...
"clusterSubnet": "10.100.128.0/17",
"serviceCidr": "10.100.16.0/20",
"dnsServiceIP" : "10.100.16.10",
...
},
Por ejemplo, si usa Azure CNI con un espacio de direcciones de red de 172.24.0.0/16
, donde la subred de control-plane-sn
es 172.24.0.0/24
y k8s-sn
es 172.24.128.0/17
:
"masterProfile": {
...
"vnetSubnetId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/control-plane-sn",
"firstConsecutiveStaticIP": "172.24.0.239",
...
},
...
"agentPoolProfiles": [
{
...
"vnetSubnetId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MDBN-K8S/providers/Microsoft.Network/virtualNetworks/MDBN-K8S/subnets/k8s-sn",
...
},
...
"kubernetesConfig": [
{
...
"clusterSubnet": "172.24.128.0/17",
"serviceCidr": "172.24.16.0/20",
"dnsServiceIP" : "172.24.16.10",
...
},
Implementación del clúster
Después de agregar los valores al modelo de API, puede implementar el clúster desde la máquina cliente mediante el comando deploy
en el motor de AKS. Para ver las instrucciones, consulte la sección Implementación de un clúster de Kubernetes.
Establecimiento de la tabla de rutas
Si utiliza kubenet, por ejemplo, networkPlugin
: kubenet
en el objeto de configuración del modelo de API kubernetesConfig
. Después de implementar el clúster, vuelva a la red virtual en el portal de usuario de Azure Stack. Establezca tanto la tabla de rutas como el grupo de seguridad de red en la hoja de la subred. Una vez que haya implementado correctamente un clúster en su red virtual personalizada, obtenga el identificador del recurso de tabla de rutas en la hoja Network del grupo de recursos del clúster.
Abra el portal de usuarios de Azure Stack Hub en la instancia de Azure Stack Hub.
Seleccione Todos los recursos.
Escriba el nombre de la red virtual en el cuadro de búsqueda.
Seleccione Subredes y, después, seleccione el nombre de la subred que contiene el clúster.
Seleccione Tabla de rutas y, después, seleccione la tabla de rutas del clúster.
Asegúrese de que esto se realiza para cada subred especificada en el modelo de API, incluida la
masterProfile
subred.
Nota:
Las redes virtuales personalizadas de los clústeres Windows de Kubernetes tienen un problema conocido.
Pasos siguientes
- Obtenga información sobre el motor de AKS en Azure Stack Hub.
- Consulte Introducción a Azure Monitor para contenedores.