Solución de problemas del complemento MeshConfig de Istio Service Mesh
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 compartida de ConfigMap
El complemento MeshConfig de Istio le permite configurar ciertas opciones de malla. Para ello, cree un configmap local en el espacio de aks-istio-system
nombres. A continuación, el plano de control Istio combina esta configmap con el valor predeterminado ConfigMap. (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 configmap denominado istio-shared-configmap-<asm-revision>
en el espacio de aks-istio-system
nombres. Por ejemplo, si usa la revisión asm-1-18
, debe asignar el nombre 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 del defaultConfig
campo son la configuración de malla para el sidecar de Envoy.
Actualizaciones de canary
Antes de iniciar una actualización controlada, 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 nuevo ConfigMap antes de iniciar la actualización, no se podrá acceder a las características configuradas por el configmap compartido. Para solucionar este problema, cree el ConfigMap que falta para la revisión correspondiente y copie los campos pertinentes del configmap compartido anterior.
Para obtener más información, consulte Actualización del complemento de malla de servicio basado en Istio para Azure Kubernetes Service y solución de problemas de actualización de revisión secundaria del complemento istio service mesh.
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 admitidos para el complemento y ver información general sobre 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 del complemento, estos campos no se admiten.
Lista de comprobación para la solución de problemas
Paso 1: Asegúrese de que está editando el configmap correcto.
- Asegúrese de que va a configurar el objeto ConfigMap compartido (por ejemplo,
istio-shared-configmap-asm-1-17
) y de que no edita el objeto 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 tabulación de la definición meshconfig en el configmap compartido
En la definición MeshConfig dentro de 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 son 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 se escriben 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 de Istio MeshConfig.
Paso 5: Corrección de problemas de consumo de memoria
Si experimenta un consumo elevado de memoria en Envoy, compruebe la configuración de Envoy para 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 tanto, provocar una mayor superficie de memoria.
Se recomienda usar el discoverySelectors
campo en la definición meshconfig para reducir el consumo de memoria de Istiod y Envoy. Para obtener más información, consulte Solución de problemas del complemento de malla de servicio General Istio.
Paso 6: Núcleos de CPU gratis
Si todos los núcleos de CPU están en uso, es posible que el concurrency
campo de la definición MeshConfig esté mal configurado. Si este campo está establecido 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 condiciones de carrera de pod y sidecar
Si el pod de la aplicación se inicia antes de que se inicie el sidecar de Envoy, 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 containers start with network issues if istio-proxy is 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 del complemento General Istio Service Mesh
Solución de problemas de puerta de enlace de entrada del complemento istio service mesh
Solución de problemas de actualización de revisión secundaria del complemento istio service mesh
Solución de problemas de certificados 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. Dicha información de contacto puede cambiar sin notificación previa. 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.