Compartir a través de


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

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.