serie K8S -K8S mejor funcionamiento en la práctica de la recopilación de registros

Gracias por compartir el texto - http://bjbsair.com/2020-04-03/tech-info/29912.html

dificultades para la recopilación de registros:

En Kubernetes, la adquisición de registros en comparación con las máquinas virtuales tradicionales, máquinas físicas a muchas formas complejas, la razón más fundamental es Kubernetes la parte inferior de la máscara de excepción, para proporcionar más fina programación de recursos, proporcionando un entorno dinámico constante al alza. Así cara recopilación de registros es más rica y entorno multi-dinámico, deben tenerse en cuenta.

Por ejemplo:

  • Durante un tiempo muy corto de ejecución de aplicaciones de tipo de trabajo, desde el inicio hasta la parada de sólo unos pocos segundos, la forma de garantizar que la recopilación de registros de datos en tiempo real no puede seguir el ritmo y perdió?
  • K8S se recomienda utilizar los nodos de gran tamaño, cada nodo puede funcionar 10-100 + contenedores, contenedores de recogida 100+ cómo en el consumo de recursos tan bajo como sea posible?
  • En K8S en aplicaciones a manera de desplegar yaml, mientras que la recopilación de registros está todavía dominado por el archivo de configuración manual de la forma, cómo hacer que la recopilación de registros de una manera K8S ser desplegado?

las mejores prácticas de recopilación de registros de la serie K8S -Kubernetes

Colección: activa o pasiva

Entrar en el modo de adquisición y de empuje, recogida pasiva, en K8S, la colección pasiva se divide generalmente en Sidecar y DaemonSet dos maneras, la iniciativa para empujar y empujar DockerEngine tiene operaciones directas escrito de dos maneras.

  • DockerEngine LogDriver función en sí, contenedor stdout se puede escribir en la memoria remota por DockerEngine mediante la configuración diferente LogDriver, con el fin de lograr el propósito de la recopilación de registros. Se puede personalizar de esta manera, la flexibilidad, el aislamiento de los recursos son muy bajos, por lo general no se recomienda para su uso en un entorno de producción;
  • negocio directo escrita en la aplicación de SDK integrado recopilación de registros, el SDK se enviará directamente al registro del servidor. Esto elimina la necesidad de una forma lógica de la placa de recogida y no requiere el despliegue adicional de agente, para un consumo mínimo de recursos del sistema, pero debido a los negocios y conectarse SDK fuerte unión, la flexibilidad general es muy baja, por lo general sólo una gran cantidad de escena registros utilizar;
  • DaemonSet única manera de ejecutar un agente de registro en cada nodo nodo, recoger todos los registros en el nodo. DaemonSet consumo de recursos relativa es mucho menor, pero la escalabilidad, aislamiento arrendatario se limita, más adecuado para una sola función o negocio no es una gran cantidad de racimos;
  • Sidecar manera de implementar un registro separado para cada agente POD, el agente sólo es responsable de una recopilación de registros de aplicaciones de negocio. Coche lateral relativamente grande el consumo de recursos, la flexibilidad y el aislamiento de varios inquilinos, pero fuerte, los grupos a gran escala propuestas o como plataforma PaaS K8S de servicio de clúster fiesta de negocios múltiples de esa manera.

las mejores prácticas de recopilación de registros de la serie K8S -Kubernetes

Para concluir:

  • Generalmente no se recomienda DockerEngine escritura directa;
  • negocio directo por escrito en el registro de la cantidad máxima recomendada de la escena;
  • DaemonSet utiliza generalmente en grupos pequeños y medianos;
  • Sidecar muy recomendable para grandes grupos.

Comparación de las diversas maneras de recoger se detalla como sigue:

las mejores prácticas de recopilación de registros de la serie K8S -Kubernetes

las mejores prácticas de recopilación de registros de la serie K8S -Kubernetes

Registro de salida: salida estándar o un archivo

Y VM / diferentes máquinas físicas, contenedor K8S y archivos de salida estándar de dos maneras. En un recipiente, la salida del registro de salida estándar directamente a stdout o stderr y stdout y descriptor de fichero DockerEngine adquisición stderr, al recibir el registro se procesa de acuerdo con las reglas DockerEngine LogDriver dispuesto; archivo de registro y el modo de impresión a las máquinas VM / físicos esencialmente similar, pero es posible utilizar diferentes de almacenamiento de registros, tales como un almacenamiento por defecto, EmptyDir, HostVolume, NFS, etc.

Aunque Stdout registro de impresión es acoplable forma recomendada oficial, pero necesitamos nota: Esta recomendación se basa en el contenedor sólo como un escenario de aplicación sencilla, los escenarios de negocio reales, le recomendamos que utilice el archivo de la forma en la medida de lo posible, tener las siguientes razones principales puntos:

  • problemas de rendimiento stdout, desde la salida estándar salida de la aplicación en el servidor, el centro pasará a través de varios procesos (por ejemplo, el uso generalizado de JSON LogDriver): stdout Aplicación -> DockerEngine -> LogDriver -> serializado como JSON -> Guardar a Archivo -> archivos de captura del agente -> análisis sintáctico JSON -> Cargar servidor. Overhead en comparación con todo el archivo del proceso mucho más, cuando la presión medida, 100.000 líneas por segundo resultado de registro ocuparán DockerEngine 1 núcleos de CPU adicionales;
  • La salida estándar no admite la clasificación, es decir, todas las salidas se mezclan en una corriente, no como una salida de clasificación de archivos, por lo general una aplicación tiene AccessLog, ErrorLog, InterfaceLog (registros de llamadas de interfaz externa), TraceLog, etc., y el formato de estos registros, el uso variar, si se mezcla en la misma colección y análisis difícil de flujo;
  • El programa principal sólo admite salida contenedor Stdout, si el programa es una carrera daemon / tenedor no será capaz de utilizar stdout;
  • Volcar el camino archivos soportan una variedad de estrategias, tales como escrituras sincrónicas / asincrónicas, tamaño de la caché, la política de rotación de archivos, la compresión de la política, estrategia clara, relativamente más flexible.

Por lo tanto, se recomienda utilizar el modo de aplicación del archivo de registro de salida en línea, Stdout única función en una sola aplicación o algún componente del sistema / operación y mantenimiento K8S.

CICD Integración: Operador de registro

las mejores prácticas de recopilación de registros de la serie K8S -Kubernetes

Kubernetes proporciona un despliegue de servicios estandarizados, las reglas de enrutamiento pueden ser declarados por yaml (API K8S), el servicio expuesto, el soporte de almacenamiento, gestión de empresas, que se define reglas de expansión contracción, por lo que es fácil de Kubernetes CICD e integración de sistemas. La recopilación de registros de operación y mantenimiento de monitoreo es una parte importante del proceso, después de todos los registros deben llevarse a cabo en tiempo real, las empresas de recogida en línea.

manera original es desplegar manualmente los registros lógicos recogidos después del lanzamiento, este enfoque requiere intervención manual, contrario a los propósitos de automatización CICD; para automatizar, algunas personas la implementación del paquete de recopilación de registros API / SDK basado de un servicio automatizado, la publicación después del disparo de una llamada web hook CICD, pero el alto coste de desarrollo de este enfoque.

En Kubernetes, el registro es la forma más estándar para integrar un nuevo recurso al sistema de registro Kubernetes a modo de operador (CRD) para gestionar y mantener. De esta manera, el sistema CICD no requiere desarrollo adicional, sólo para darse cuenta configuración de registro relacionada adicional acerca de la hora de implementar el sistema Kubernetes.

Kubernetes programa de recopilación de registros

las mejores prácticas de recopilación de registros de la serie K8S -Kubernetes

Mucho antes de Kubernetes apareció, empezamos a desarrollar esquema de recopilación de registros contenedor del medio ambiente, con el establo gradual K8S, comenzamos a migrar a un montón de negocios en la plataforma K8S, sino que también se basa en la base del registro anterior en el set especialmente desarrollado de K8S programa de adquisición. Con las características principales son:

  • Apoyo a una variedad de recolección de datos en tiempo real, que comprende un archivo contenedor, el contenedor Stdout, archivos host, Diario, eventos y similares;
  • Apoyar el despliegue de captura múltiple, incluyendo DaemonSet, Sidecar, DockerEngine LogDriver y así sucesivamente;
  • datos de registro de enriquecimiento de apoyo, incluyendo el espacio de nombres adicional, Pod, Recipiente, imágenes, información de nodo;
  • Estabilidad, alta fiabilidad, Agente lograr logtail Ali recoge de la basada en la investigación, toda la red tiene actualmente varios millones de casos desplegadas;
  • extensiones basadas en el CRD, se pueden utilizar Kubernetes implementar lanzado para implementar reglas de recopilación de registros, perfectamente integradas con CICD.

componentes de adquisición de registro de la instalación:

Actualmente este programa de recolección se ha abierto, ofrecemos un paquete de instalación del timón, que incluye DaemonSet, AliyunlogConfig la declaración logtail CRD CRD y el controlador, se pueden utilizar directamente después de la instalación y la configuración DaemonSet adquisición de la CRD. La instalación es la siguiente:

  1. racimos Ali nube Kubernetes puede comprobar instalado cuando se abre, se instalará automáticamente los componentes descritos anteriormente, cuando se crea la agrupación. Si el tiempo de apertura no está instalado, se puede instalar de forma manual;
  2. Si el auto Kubernetes, si uno mismo o en la nube u otra línea, tal esquema de adquisición puede ser utilizado, con referencia a la instalación específica montado en un auto Kubernetes Ali nube.

Después de instalar los componentes anteriores, logtail y el controlador correspondiente se ejecutarán en un clúster, pero estos componentes por defecto y no recogerá ninguna de registro, es necesario reglas de recopilación de registros de configuración para recoger todo tipo de ficheros indicada Pod.

configuración de la regla Colección: La variable de entorno o CRD:

Además de configurar manualmente la consola de servicio en el registro, por Kubernetes, además, soporta dos configuraciones: variables de entorno y CRD.

  • Las variables de entorno son era de las comunidades de autoconfiguración han estado utilizando, solo necesitamos declarar un conjunto de datos de direcciones se pueden recoger en una variable de entorno contenedor en que desea recogido, logtail automáticamente recopilar los datos al servidor;

De esta manera el despliegue de simple, el aprendizaje de bajo costo y muy fácil de usar, pero raramente es capaz de reglas de configuración de apoyo, muchos de configuración avanzada (por ejemplo, métodos analíticos, filtración, listas blancas y negras, etc.) no son compatibles, pero la forma en que esta declaración no es compatible modificar / borrar, modificar cada vez que se crea realmente una nueva configuración de la colección, configuración de la colección histórica requiere limpieza manual, si no causará pérdida de recursos.

las mejores prácticas de recopilación de registros de la serie K8S -Kubernetes

CRD configuración está muy en línea oficial Kubernetes recomienda extensión estándar, lo que permite que la colección está dispuesta de manera que la gestión de recursos K8S, para declarar los datos a ser recogidos a través de la implementación de este particular AliyunLogConfig recursos CRD a Kubernetes.

Ejemplo, el siguiente ejemplo es desplegar una salida estándar recipiente de recogida, y en donde las definiciones requieren Stdout Stderr se recogen, y para excluir las variables ambientales comprende COLLEXT_STDOUT_FLAG: recipiente falsa.

forma basada en el CRD de configuración para Kubernetes gestión de los recursos de extensión estándar, adiciones y supresiones de apoyo para cambiar buscar la configuración completa de la semántica, pero también es compatible con una variedad de configuración avanzada, se recomienda extremadamente configuración de adquisición.

las mejores prácticas de recopilación de registros de la serie K8S -Kubernetes

reglas de recopilación de configuración recomendada

las mejores prácticas de recopilación de registros de la serie K8S -Kubernetes

escenarios de aplicación práctica se utilizan generalmente DaemonSet o DaemonSet con modo mixto Sidecar, DaemonSet ventaja de la utilización de recursos es alta, pero hay un problema que todos comparten logtail DaemonSet la configuración global, y un solo soporte de configuración logtail capsulado, por lo tanto, incapaz de soportar más clusters de aplicaciones número.

Lo anterior es la configuración recomendada que damos, la idea central es:

  • Una configuración similar tanto de adquisición de datos, reduciendo el número de configuración, reduciendo DaemonSet la presión;
  • El núcleo de la aplicación debería disponer de recursos adecuados para recoger, puede utilizar manera del coche lateral;
  • Siempre que sea posible, la configuración de uso manera CRD;
  • Puesto que cada individuo es de configuración logtail Sidecar, no hay límite en el número de configuración, que es más adecuado para el uso de grandes conglomerados.

racimos práctica 1-- SME

las mejores prácticas de recopilación de registros de la serie K8S -Kubernetes

La gran mayoría son clúster pequeñas y medianas Kubernetes, y no existe una definición clara para pequeñas y medianas empresas, el número de aplicación general en menos de 500, menor que el tamaño del nodo 1000, ninguna función de funcionamiento de la plataforma Kubernetes clara y mantenimiento. Este escenario no es particularmente un gran número de aplicaciones, DaemonSet puede soportar todos los de la configuración de la colección:

  • La mayor parte de las aplicaciones de negocio utilizando los métodos de recolección de datos DaemonSet;
  • Las aplicaciones internas (requisitos de alta fiabilidad para la recolección, tales como el sistema de pedidos / comercio) utilizan el modo de adquisición del coche lateral solo.

Práctica 2 - racimos grandes

las mejores prácticas de recopilación de registros de la serie K8S -Kubernetes

Para algunas grandes muy grandes racimos / como una plataforma PaaS, negocios en general que en 1000, el tamaño del nodo son más de 1.000, un especial de personal de operación y mantenimiento plataforma Kubernetes. El número de aplicaciones en este escenario no hay límite, DaemonSet no puede apoyar, por lo que debe utilizar manera Sidecar, el plan general es el siguiente:

  • los componentes del sistema Kubernetes conectarse plataforma en sí, el tipo de registro del núcleo relativamente fija, esta parte de la adquisición de registro de uso DaemonSet, principalmente para el personal de operación y mantenimiento para proporcionar la plataforma de servicios;
  • Sidecar cada servicio utilizando el modo de adquisición de registro, cada servicio puede ser proporcionado dirección de destino adquisición independientemente Sidecar, para proporcionar suficiente flexibilidad para que el personal de servicio DevOps.

Supongo que te gusta

Origin www.cnblogs.com/lihanlin/p/12657680.html
Recomendado
Clasificación