Configure kube-proxy
en Azure Kubernetes Service (AKS) (versión preliminar)
kube-proxy
es un componente de Kubernetes que controla el enrutamiento del tráfico de los servicios dentro del clúster. Hay dos back-end disponibles para el equilibrio de carga de nivel 3/4 en kube-proxy
ascendente: iptables e IPVS.
- iptables es el back-end predeterminado utilizado en la mayoría de los clústeres de Kubernetes. Es sencillo y bien compatible, pero no es tan eficaz o inteligente como IPVS.
- IPVS utiliza el servidor virtual Linux, un equilibrador de carga de nivel 3/4 integrado en el kernel de Linux. IPVS proporciona una serie de ventajas sobre la configuración predeterminada de iptables, incluido el reconocimiento del estado, el seguimiento de conexiones y el equilibrio de carga más inteligente. IPVS no admite Azure Network Policy.
Para más información, consulte la Documentación de Kubernetes sobre kube-proxy.
Nota
Si lo desea, puede deshabilitar el DaemonSet kube-proxy
administrado por AKS para que admita CNI propio.
Importante
Las características en versión preliminar de AKS están disponibles como opción de participación y autoservicio. Las versiones preliminares se proporcionan "tal cual" y "como están disponibles", y están excluidas de los Acuerdos de nivel de servicio y garantía limitada. Las versiones preliminares de AKS reciben cobertura parcial del soporte al cliente en la medida de lo posible. Por lo tanto, estas características no están diseñadas para su uso en producción. Para más información, consulte los siguientes artículos de soporte:
- Si usa la CLI de Azure, necesita la extensión
aks-preview
. Consulte Instalar la extensión de la CLI de Azureaks-preview
. - Si usa ARM o la API de REST, la versión de la API de AKS debe ser 2022-08-02-preview o posterior.
- Debe registrar la marca de característica
KubeProxyConfigurationPreview
. Consulte Registrar la marca de característicaKubeProxyConfigurationPreview
.
Instale la extensión
aks-preview
mediante el comandoaz extension add
.az extension add --name aks-preview
Actualiza a la última versión de la extensión mediante el comando
az extension update
.az extension update --name aks-preview
Registre la marca de características de
KubeProxyConfigurationPreview
mediante el comandoaz feature register
.az feature register --namespace "Microsoft.ContainerService" --name "KubeProxyConfigurationPreview"
Tarda unos minutos en que el estado muestre Registrado.
Comprobar el estado del registro mediante el comando
az feature show
.az feature show --namespace "Microsoft.ContainerService" --name "KubeProxyConfigurationPreview"
Cuando aparezca el estado Registrado, actualice el registro del proveedor de recursos Microsoft.ContainerService mediante el comando
az provider register
.az provider register --namespace Microsoft.ContainerService
La estructura de configuración completa de kube-proxy
se puede encontrar en el esquema de clúster de AKS.
enabled
: determina la implementación del DaemonSet dekube-proxy
. Tiene como valor predeterminadotrue
.mode
: puede establecerIPTABLES
oIPVS
. Tiene como valor predeterminadoIPTABLES
.ipvsConfig
: simode
esIPVS
, este objeto contiene propiedades de configuración específicas de IPVS.scheduler
: determina el programador de conexiones que se va a usar. Los valores admitidos incluyen ,LeastConnection
: envía las conexiones al pod de back-end con menos conexiones.RoundRobin
: distribuye las conexiones uniformemente entre pods de back-end.
tcpFinTimeoutSeconds
: establece el valor de longitud de tiempo de espera después de que una sesión TCP reciba un FIN.tcpTimeoutSeconds
: establece el valor de longitud de tiempo de espera para las sesiones TCP inactivas.udpTimeoutSeconds
: establece el valor de longitud de tiempo de espera para las sesiones UDP inactivas.
Nota
El equilibrio de carga IPVS funciona en cada nodo de forma independiente y solo es consciente de las conexiones que fluyen a través del nodo local. Esto significa que, aunque LeastConnection
da lugar a una carga más uniforme bajo un mayor número de conexiones, cuando hay un número bajo de conexiones (# conexiones < 2 * recuento de nodos) el tráfico puede estar relativamente desequilibrado.
La configuración de kube-proxy
es una configuración para todo el clúster. No necesita actualizar sus servicios.
Advertencia
Cambiar la configuración de kube-proxy puede provocar una ligera interrupción en el flujo de tráfico del servicio de clúster.
Cree un archivo de configuración con la configuración de
kube-proxy
que desee. Por ejemplo, la siguiente configuración habilita IPVS con el programador deLeastConnection
y establece el tiempo de espera TCP en 900 segundos.{ "enabled": true, "mode": "IPVS", "ipvsConfig": { "scheduler": "LeastConnection", "TCPTimeoutSeconds": 900, "TCPFINTimeoutSeconds": 120, "UDPTimeoutSeconds": 300 } }
Use el comando
az aks create
oaz aks update
para crear un nuevo clúster o actualizar uno existente con el archivo de configuración y establezca el parámetro--kube-proxy-config
en el archivo de configuración.# Create a new cluster az aks create \ --resource-group <resourceGroup> \ --name <clusterName> \ --kube-proxy-config kube-proxy.json \ --generate-ssh-keys # Update an existing cluster az aks update \ --resource-group <resourceGroup> \ --name <clusterName> \ --kube-proxy-config kube-proxy.json
En este artículo se explica cómo configurar kube-proxy
en Azure Kubernetes Service (AKS). Para más información sobre el equilibrio de carga en AKS, consulte los artículos siguientes:
Comentarios de Azure Kubernetes Service
Azure Kubernetes Service es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios: