Solución de problemas del complemento mesh de istio service meshConfig
En este artículo se describe cómo solucionar problemas que se producen al usar MeshConfig para configurar el complemento de malla de servicio Istio para Microsoft Azure Kubernetes Service (AKS).
Configuración de ConfigMap compartida
El complemento Istio MeshConfig le permite configurar ciertas opciones de ancho de malla. Para ello, cree un configMap local en el aks-istio-system
espacio de nombres . A continuación, el plano de control istio combina este configMap con el configMap predeterminado. (Si existe un conflicto entre la configuración, la configuración predeterminada tiene prioridad). Este enfoque se denomina configuración de ConfigMap compartida.
Cree un objeto ConfigMap denominado istio-shared-configmap-<asm-revision>
en el aks-istio-system
espacio de nombres . Por ejemplo, si usa la revisión asm-1-18
, debe asignar un nombre a ConfigMap, istio-shared-configmap-asm-1-18
. A continuación, proporcione la configuración de malla dentro del mesh
campo de la data
sección, como se muestra en el siguiente archivo YAML configMap:
apiVersion: v1
kind: ConfigMap
metadata:
name: istio-shared-configmap-asm-1-18
namespace: aks-istio-system
data:
mesh: |-
accessLogFile: /dev/stdout
defaultConfig:
holdApplicationUntilProxyStarts: true
Los valores dentro del defaultConfig
campo son la configuración de todo la malla para el sidecar envoy.
Actualizaciones de valor controlado
Antes de iniciar una actualización de valor controlado, siga las instrucciones de configuración y actualización de malla para crear un segundo configMap compartido para la nueva revisión del plano de control en el aks-istio-system
espacio de nombres.
Si no se creó un elemento ConfigMap antes de iniciar la actualización, no se podrá acceder a las características configuradas por el elemento ConfigMap compartido. Para solucionar este problema, cree el elemento ConfigMap que falta para la revisión correspondiente y copie los campos pertinentes de configMap compartido anterior.
Para más información, consulte Upgrade Istio-based service mesh add-on for Azure Kubernetes Service and Istio service mesh add-on minor revision upgrade troubleshooting.
Valores permitidos, admitidos y no permitidos
El complemento Istio designa los campos MeshConfig como permitidos y supported
, permitidos, pero unsupported
, y disallowed
. Para obtener información sobre los campos MeshConfig permitidos y compatibles para el complemento y consulte una introducción a los distintos niveles de soporte técnico, consulte Configuración del complemento de malla de servicio basado en Istio para Azure Kubernetes Service. Si los campos que se mencionan en la documentación de Istio ascendente no aparecen en la lista de permitidos para el complemento, estos campos no se permiten.
Lista de comprobación de solución de problemas
Paso 1: Asegúrese de que está editando el configMap correcto
- Asegúrese de que va a configurar configMap compartido (por ejemplo,
istio-shared-configmap-asm-1-17
) y no edite el configMap predeterminado (por ejemplo,istio-asm-1-17
). - Asegúrese de que configMap compartido apunta a la revisión correcta en su título.
Paso 2: Quitar sangrías de pestañas de la definición MeshConfig en el configMap compartido
En la definición MeshConfig dentro del configMap compartido (en data.mesh
), asegúrese de usar espacios en lugar de pestañas. Quite los caracteres de tabulación que encuentre.
Paso 3: Asegúrese de que los campos MeshConfig sean válidos
Si los campos no se reconocen o no se incluyen en la lista de permitidos MeshConfig, se rechazan las actualizaciones de MeshConfig. Compruebe si se permiten los campos MeshConfig deseados y asegúrese de que los campos están escritos correctamente.
Paso 4: Evitar la sobrecarga de CoreDNS
Los problemas relacionados con la sobrecarga de CoreDNS pueden requerir que cambie cierta configuración de DNS de Istio, como el dnsRefreshRate
campo de la definición meshConfig de Istio.
Paso 5: Corregir problemas de consumo de memoria
Si experimenta un consumo elevado de memoria en Envoy, compruebe la configuración de Envoy para obtener la recopilación de datos de estadísticas. Si va a personalizar las métricas de Istio a través de MeshConfig, recuerde que ciertas métricas pueden tener una cardinalidad alta y, por lo tanto, provocar una mayor superficie de memoria.
Se recomienda usar el campo en la definición MeshConfig para reducir el discoverySelectors
consumo de memoria para Istiod y Envoy. Para obtener más información, consulte Solución de problemas del complemento general de malla de servicio de Istio.
Paso 6: Núcleos de CPU gratuitos
Si todos los núcleos de CPU están en uso, el concurrency
campo de la definición MeshConfig podría estar mal configurado. Si este campo se establece en cero, Envoy usa todos los núcleos de CPU. En esta situación, quite concurrency
de la definición MeshConfig. Si el concurrency
campo no está configurado, las solicitudes de CPU y los límites determinan el número de núcleos de CPU que se usan en su lugar.
Paso 7: Corregir las condiciones de carrera de pods y sidecar
Si el pod de la aplicación se inicia antes de que se inicie Envoy sidecar, es posible que la aplicación deje de responder o que se reinicie. Para obtener instrucciones sobre cómo evitar este problema, consulte Pod o contenedores comienzan con problemas de red si istio-proxy no está listo. En concreto, puede establecer el holdApplicationUntilProxyStarts
campo MeshConfig en defaultConfig
para true
ayudar a evitar estas condiciones de carrera.
Referencias
Configuración del complemento de malla de servicio basado en Istio para Azure Kubernetes Service
Solución de problemas generales del complemento de malla de servicio de Istio
Solución de problemas de puerta de enlace de entrada de complemento de Istio Service Mesh
Solución de problemas de certificado de ca del complemento de malla de servicio Istio
Aviso de declinación de responsabilidades sobre la información de terceros
Los productos de otros fabricantes que se mencionan en este artículo han sido creados por compañías independientes de Microsoft. Microsoft no ofrece ninguna garantía, ya sea implícita o de otro tipo, sobre la confiabilidad o el rendimiento de dichos productos.
Aviso de declinación de responsabilidades sobre la información de contacto de terceros
Microsoft proporciona información de contacto de otros proveedores para ayudarle a encontrar información adicional sobre este tema. Esta información de contacto puede cambiar sin previo aviso. Microsoft no garantiza la precisión de esta información de contacto de terceros.
Ponte en contacto con nosotros para obtener ayuda
Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.