En esta página se ofrece una descripción general de las opciones de registro disponibles en Google Kubernetes Engine (GKE).
Información general
Los registros de GKE enviados a Cloud Logging se almacenan en un almacén de datos persistente específico. Aunque GKE almacena registros, estos no se guardan permanentemente. Por ejemplo, los registros de contenedores de GKE se eliminan cuando se elimina su pod host, cuando se queda sin espacio el disco en el que están almacenados o cuando se sustituyen por registros más recientes. Los registros del sistema se eliminan periódicamente para liberar espacio para nuevos registros. Los eventos de clúster se eliminan al cabo de una hora.
Agente de registro de GKE
En el caso de los registros de contenedores y del sistema, GKE implementa de forma predeterminada un agente de registro por nodo que lee los registros de contenedores, añade metadatos útiles y, a continuación, los almacena en Cloud Logging. El agente de registro de GKE busca registros de contenedores en las siguientes fuentes:
Resultados y registros de errores estándar de procesos en contenedores
Registros de kubelet y del tiempo de ejecución del contenedor
Registros de componentes del sistema, como secuencias de comandos de inicio de una máquina virtual
En el caso de los eventos, GKE usa una implementación en el espacio de nombres kube-system, que recoge automáticamente los eventos y los envía a Logging.
Qué registros se recogen
De forma predeterminada, GKE recoge varios tipos de registros de tu clúster y los almacena en Cloud Logging:
Los registros de auditoría incluyen el registro de actividad de administrador, el registro de acceso a los datos y el registro de eventos. Para obtener información detallada sobre los registros de auditoría de GKE, consulta la documentación Registros de auditoría de GKE. Los registros de auditoría de GKE no se pueden inhabilitar.
Registros del sistema, incluidos los que se indican en la sección Registros disponibles.
Los registros de aplicaciones incluyen todos los registros generados por contenedores que no son del sistema y que se ejecutan en nodos de usuario.
Las siguientes limitaciones pueden provocar que no se envíen los registros de aplicaciones a Cloud Logging:
- En los registros JSON, no se admiten claves JSON duplicadas.
stream
es una clave reservada en la canalización de registro de GKE. Unastream
clave en el registro JSON de la aplicación puede provocar un comportamiento inesperado y que se eliminen registros.- Cloud Logging tiene un límite de tamaño por LogEntry. Las entradas de registro que superen el límite de tamaño se descartarán en el caso de los registros jsonPayload y se truncarán en el caso de los registros textPayload.
De forma opcional, GKE puede recoger tipos de registros adicionales de determinados componentes del plano de control de Kubernetes y almacenarlos en Cloud Logging:
Los registros del servidor de la API incluyen todos los registros generados por el servidor de la API de Kubernetes (
kube-apiserver
).Los registros del programador incluyen todos los registros generados por el programador de Kubernetes (
kube-scheduler
).Los registros del gestor de controladores incluyen todos los registros generados por el gestor de controladores de Kubernetes (
kube-controller-manager
).
Para obtener más información sobre cada uno de estos componentes del plano de control, consulta el artículo Arquitectura de clústeres de GKE.
Recogida de tus registros
Cuando creas un clúster de GKE, la integración con Cloud Logging se habilita de forma predeterminada.
Los registros del sistema y de las aplicaciones se envían al enrutador de registros de Cloud Logging.
Desde ahí, los registros se pueden ingerir en Cloud Logging, excluir o exportar a BigQuery, Pub/Sub o Cloud Storage.
También puedes configurar un clúster estándar para que solo registre los registros del sistema y no recoja los registros de aplicaciones. En los clústeres Autopilot y Estándar, los filtros de exclusión te permiten reducir el volumen de registros que se envían a Cloud Logging.
Rendimiento de registro
Cuando se habilita el registro del sistema, se implementa y gestiona automáticamente un agente de Cloud Logging específico. Se ejecuta en todos los nodos de GKE de un clúster para recoger registros, añade metadatos útiles sobre el contenedor, el pod y el clúster, y, a continuación, envía los registros a Cloud Logging mediante un agente basado en fluentbit.
Si algún nodo de GKE requiere más del rendimiento de registro predeterminado y tu clúster Estándar de GKE usa la versión 1.23.13-gke.1000 o una posterior del plano de control, puedes configurar GKE para que implemente una configuración alternativa del agente de Logging diseñada para maximizar el rendimiento de registro.
Para obtener más información, consulta Ajustar el rendimiento de los registros.
Recogida de registros con fluentd o fluentbit personalizados
El agente de registro predeterminado de GKE proporciona una solución gestionada para implementar y gestionar los agentes que envían los registros de tus clústeres a Cloud Logging. Los registros se recogen mediante un agente basado en fluentbit.
Recoger registros de auditd
de Linux para nodos de GKE
Puedes habilitar registros de auditoría del sistema operativo detallados en nodos de GKE que ejecuten Container-Optimized OS. Los registros del sistema operativo de tus nodos proporcionan información valiosa sobre el estado de tu clúster y tus cargas de trabajo, como mensajes de error, intentos de inicio de sesión y ejecuciones binarias. Puede usar esta información para depurar problemas o investigar incidentes de seguridad.
Para obtener más información, consulta Habilitar registros de auditd de Linux en nodos de GKE.
Registros de auditoría de GKE
Para obtener información detallada sobre las entradas de registro que se aplican a los tipos de recursos Kubernetes Cluster y GKE Cluster Operations, consulta Registro de auditoría.
Control de acceso de registro
El registro del control de acceso tiene dos aspectos: el acceso a la aplicación y el acceso de los usuarios. Cloud Logging proporciona roles de Gestión de Identidades y Accesos (IAM) que puedes usar para conceder el acceso adecuado.
Acceso a aplicaciones
Las aplicaciones necesitan permisos para escribir registros en Cloud Logging, que se conceden asignando el rol de gestión de identidades y accesos roles/logging.logWriter
a la cuenta de servicio vinculada al grupo de nodos subyacente.
Acceso a la vista de usuario
Debes tener el rol roles/logging.viewer
para ver tus registros en tu proyecto. Si necesitas acceder a los registros de acceso a datos, debes tener el permiso de gestión de identidades y accesos logging.privateLogViewer
.
Para obtener más información sobre los permisos y los roles, consulta la guía Control de acceso. También puedes consultar las prácticas recomendadas para los registros de auditoría de Cloud, que también se aplican a Cloud Logging en general.
Acceso de administrador de usuarios
Los roles de IAM roles/logging.configWriter
y roles/logging.admin
proporcionan las funciones administrativas. El rol roles/logging.configWriter
es necesario para crear un receptor de registro, que se suele usar para dirigir los registros a un proyecto específico o centralizado. Por ejemplo, puedes usar un sumidero de registros junto con un filtro de registros para dirigir todos los registros de un espacio de nombres a un segmento de registros centralizado.
Para obtener más información, consulta la guía Control de acceso de Cloud Logging.
Prácticas recomendadas
- Registro estructurado: el agente de registro integrado con GKE leerá los documentos JSON serializados en cadenas de una sola línea y escritos en la salida estándar o en el error estándar, y los enviará a Google Cloud Observability como entradas de registro estructuradas.
- Consulta Registro estructurado para obtener más información sobre cómo trabajar con un agente de registro integrado.
- Puedes usar filtros de registro avanzados para filtrar los registros en función de los campos del documento JSON.
- Los registros generados con glog tendrán los campos comunes analizados, como
severity
,pid
,source_file
ysource_line
. Sin embargo, la carga útil del mensaje no se analiza y se muestra tal cual en el mensaje de registro resultante en Google Cloud Observability.
- Gravedades: de forma predeterminada, los registros escritos en la salida estándar tienen el nivel
INFO
y los registros escritos en el error estándar tienen el nivelERROR
. Los registros estructurados pueden incluir un camposeverity
, que define la gravedad del registro. - Exportar a BigQuery: para hacer análisis adicionales, puede exportar registros a servicios externos, como BigQuery o Pub/Sub. Los registros exportados a BigQuery conservan el formato y la estructura. Consulta la información general sobre el enrutamiento y el almacenamiento para obtener más información.
Alertas: cuando Logging registra un comportamiento inesperado, puedes usar métricas basadas en registros para configurar políticas de alertas. Para ver un ejemplo, consulta Crear una política de alertas en una métrica de contador. Para obtener información detallada sobre las métricas basadas en registros, consulta el artículo Información general sobre las métricas basadas en registros.
Informes de errores: para recoger errores de las aplicaciones que se ejecutan en tus clústeres, puedes usar Error Reporting.
Registros disponibles
Si decides enviar registros a Cloud Logging, debes enviar registros del sistema y, opcionalmente, puedes enviar registros de otras fuentes.
En la siguiente tabla se indican los valores admitidos de la marca --logging
para los comandos create y update.
Origen del archivo de registro | Valor de --logging |
Registros recogidos |
---|---|---|
Ninguno | NONE |
No se han enviado registros a Cloud Logging porque no hay ningún agente de recogida de registros instalado en el clúster. Este valor no se admite en los clústeres de Autopilot. |
Sistema | SYSTEM |
Recoge registros de lo siguiente:
También recoge eventos de Kubernetes. Este valor es obligatorio para todos los tipos de clústeres. |
Cargas de trabajo | WORKLOAD |
Todos los registros generados por contenedores que no sean del sistema y que se ejecuten en nodos de usuario. Este valor está activado de forma predeterminada, pero es opcional para todos los tipos de clústeres. |
Servidor de API | API_SERVER |
Todos los registros generados por kube-apiserver . Este valor es opcional para todos los tipos de clúster.
|
Programador | SCHEDULER |
Todos los registros generados por kube-scheduler . Este valor es opcional para todos los tipos de clúster.
|
Gestor de controladores | CONTROLLER_MANAGER |
Todos los registros generados por kube-controller-manager . Este valor es opcional para todos los tipos de clústeres.
|
Herramienta de adaptación dinámica de grupo horizontal | KCP_HPA |
Exporta los registros de decisiones de recomendaciones atómicas y finales de cada objeto HPA de tu clúster de GKE. Para obtener más información, consulta Ver eventos de la herramienta de adaptación dinámica horizontal de pods. |
Conexiones de red del plano de control | KCP_CONNECTION |
Solo disponible con la autoridad del plano de control de GKE Registros de conexiones de red entrantes de instancias del plano de control de GKE. Para obtener más información, consulta Verificar las conexiones de Google al plano de control del clúster. |
Eventos SSH del plano de control | KCP_SSHD |
Solo disponible con la autoridad del plano de control de GKE Genera registros de todos los eventos de SSH, como la aceptación de claves públicas y el cierre de sesiones, que se producen cuando el personal de Google se conecta a las instancias del plano de control de tu clúster durante los casos de asistencia o para otros accesos administrativos. Para obtener más información, consulta Verificar las conexiones de Google al plano de control del clúster. |
Precios
Los registros de GKE se exportan a Cloud Logging. Se aplican los precios de Cloud Logging.
Se te cobrarán los costes de almacenamiento acumulados cuando exportes los registros a otro Google Cloud servicio, como BigQuery. Para obtener información sobre los costes asociados a Cloud Logging, consulta la página Precios.
Cuota
Los registros del plano de control consumen la cuota "Solicitudes de escritura por minuto" de la API Cloud Logging. Antes de habilitar los registros del plano de control, consulta el pico de uso reciente de esa cuota. Si tienes muchos clústeres en el mismo proyecto o ya te estás acercando al límite de cuota, puedes solicitar un aumento del límite de cuota antes de habilitar los registros del plano de control.
Controles de acceso
Si quieres limitar el acceso a los registros del plano de control de Kubernetes en tu organización, puedes crear un segmento de registro independiente con controles de acceso más limitados.
Si los almacenas en un segmento de registros independiente con acceso limitado, los registros del plano de control del segmento no serán accesibles automáticamente para cualquier persona con acceso roles/logging.viewer
al proyecto. Además, si decides eliminar determinados registros del plano de control por motivos de privacidad o seguridad, almacenarlos en un bucket de registro independiente con acceso limitado te permite eliminar los registros sin que afecte a los de otros componentes o servicios.