En esta página se describe cómo habilitar y ver los registros de las flotas. Con el registro de flotas, se agregan y se acotan varios registros, lo que te permite analizar el estado de tus aplicaciones en una vista consolidada. Esta página está dirigida a:
- Administradores de la plataforma que quieran habilitar el registro de flotas y ver los registros en todos los espacios de nombres.
- Operadores de servicios que quieran ver los registros de los espacios de nombres específicos a los que tienen acceso.
Información general
Los registros de flota te permiten ver los registros de toda la flota o de permisos de equipo específicos. Los permisos son una función de gestión de equipos que te permite definir subconjuntos de registros de flota y otros recursos por equipos, y asociar cada permiso a uno o varios clústeres que formen parte de una flota. Para obtener más información sobre los ámbitos, consulta Gestionar equipos de tu flota.
Puedes ver dos tipos de registros de flota:
Registros predeterminados: todos los registros de Kubernetes (excepto los registros de auditoría) que no pertenezcan a ningún ámbito de flota específico con los siguientes tipos de recursos:
k8s_container
k8s_pod
k8s_node
k8s_cluster
k8s_control_plane_components
Registros de permisos de flota: registros de contenedores y pods de aplicaciones propiedad de un equipo implementadas en un permiso de flota específico con varios espacios de nombres a nivel de flota.
Ver los registros del ámbito de la flota es opcional. Si no quieres configurar la gestión de equipos, puedes usar el registro de flotas para ver los registros predeterminados.
Los registros se pueden enrutar a diferentes segmentos de registros del proyecto host de la flota con diferentes vistas para el control de acceso. El periodo de conservación predeterminado de un segmento de registros es de 30 días. Puedes configurar este periodo si es necesario.
Hay dos modos admitidos para el enrutamiento de registros en los que las flotas contienen clústeres de varios proyectos (registro entre proyectos):
MOVE
: todos los registros se mueven al proyecto host de la flota. Si un clúster de la flota pertenece a otro proyecto, sus registros no se conservarán en el proyecto original. Google CloudCOPY
: todos los registros se envían al proyecto host de la flota. Si un clúster de la flota pertenece a otro proyecto, sus registros también se conservarán en el proyecto original. Google Cloud
Antes de empezar
Si ya has creado manualmente contenedores, receptores y filtros de exclusión de Cloud Logging, asegúrate de que los nombres que les has asignado no entren en conflicto con las restricciones de nomenclatura de los registros de flotas. Si hay un conflicto de nombres, ponte en contacto con el equipo de Asistencia antes de continuar.
Asegúrate de que los clústeres cuyos registros quieras ver se hayan registrado en la flota que hayas elegido.
Si aún no la has instalado, instala la CLI de Google Cloud siguiendo las instrucciones de instalación. Necesitas la versión 424.0.0 o una posterior para ver los registros de tu flota.
Asegúrate de que tu proyecto host de la flota tenga habilitadas todas las APIs necesarias, incluida la API de Anthos:
gcloud services enable --project=FLEET_HOST_PROJECT_ID \ gkehub.googleapis.com \ container.googleapis.com \ connectgateway.googleapis.com \ cloudresourcemanager.googleapis.com \ iam.googleapis.com \ anthos.googleapis.com
donde:
- FLEET_HOST_PROJECT_ID es el ID del proyecto host de tu flota. Consulta cómo encontrar este valor.
Preparar ámbitos, espacios de nombres y cargas de trabajo
Si quieres ver los registros del ámbito de la flota, tendrás que crear un ámbito de flota y un espacio de nombres de flota, además de preparar las cargas de trabajo para la recogida de registros.
Antes de continuar, define el proyecto predeterminado de la CLI de Google Cloud ejecutando el siguiente comando:
gcloud config set project FLEET_HOST_PROJECT_ID
Crear ámbitos y espacios de nombres
Si quiere ver los registros a nivel de ámbito y aún no ha configurado los ámbitos, siga las instrucciones que se indican en el artículo Gestionar equipos de su flota para crear ámbitos, añadir clústeres a ámbitos y configurar espacios de nombres de la flota.
Preparar cargas de trabajo
Para ver los datos de registro de tus aplicaciones, debes desplegar tus cargas de trabajo en un clúster en el espacio de nombres de la flota configurado en el paso anterior. Este paso se aplica tanto si decides ver los registros predeterminados como los registros del ámbito de la flota o ambos. Aquí tienes un ejemplo para configurar tu carga de trabajo:
apiVersion: v1
kind: Pod
metadata:
name: fleet-example-pod
namespace: NAMESPACE_NAME
spec:
containers:
- name: count
image: ubuntu:14.04
args: [bash, -c,
'for ((i = 0; ; i++)); do echo "$i: $(date)"; sleep 1; done']
Después de implementar el recurso, puede que se produzca un error si no se ha podido crear el espacio de nombres de la flota por algún motivo. En este caso, ejecuta el siguiente comando para volver a crear el espacio de nombres y vuelve a ejecutar el comando de implementación de la carga de trabajo:
kubectl create namespace NAMESPACE_NAME
Habilitar el registro de flotas
En esta sección se describe cómo habilitar la función de registro de la flota y conceder acceso al equipo para ver los registros.
gcloud
Puedes habilitar el registro de flotas mediante la CLI de Google Cloud especificando los campos de configuración de la función en un archivo JSON o YAML. A continuación se muestra un ejemplo de configuración para el registro de flotas en formato JSON:
{ "loggingConfig": { "defaultConfig": { "mode": "COPY" }, "fleetScopeLogsConfig": { "mode": "MOVE" } } }
Para ver todos los campos que puedes configurar para esta función, consulta la referencia de la API.
Cuando los campos defaultConfig
o fleetScopeLogsConfig
están habilitados con los modos COPY
o MOVE
, como se muestra en el ejemplo anterior, se crea un receptor de registro con el prefijo fleet-o11y-
. Este sumidero de registro se crea en el Google Cloud proyecto para enrutar los registros de destino del proyecto de clúster al proyecto host de la flota.
Cuando fleetScopeLogsConfig
está habilitado, también se crea un segmento de registro con el nombre fleet-o11y-scope-$SCOPE_NAME
en la global
región del proyecto host de la flota, si aún no existe. Ten en cuenta que no puedes cambiar la región del contenedor.
En este ejemplo, los registros predeterminados se enviarán al proyecto host de la flota y se conservarán en el proyecto Google Cloud original, mientras que los registros del ámbito de la flota se enviarán al proyecto host de la flota y no se conservarán en el proyecto Google Cloud .
Añade la configuración que hayas elegido a un archivo JSON y actualiza la flota:
gcloud container fleet fleetobservability update \ --logging-config=JSON_FILE
Sustituye JSON_FILE por el nombre del archivo.
Terraform
- La función de observabilidad de la flota está habilitada de forma predeterminada. Si es la primera vez que usas Terraform para gestionar la función de observabilidad de la flota, importa la función a Terraform ejecutando el siguiente comando:
terraform import google_gke_hub_feature.feature projects/FLEET_HOST_PROJECT_ID/locations/global/features/fleetobservability
- Puedes habilitar el registro de flotas con Terraform mediante un módulo de Terraform.
Por ejemplo, puedes añadir el siguiente bloque a tu configuración de Terraform:
resource "google_gke_hub_feature" "feature" {
name = "fleetobservability"
location = "global"
spec {
fleetobservability {
logging_config {
default_config {
mode = "COPY"
}
fleet_scope_logs_config {
mode = "MOVE"
}
}
}
}
}
Cuando los campos default_config
o fleet_scope_logs_config
están habilitados con los modos COPY
o MOVE
, como se muestra en el ejemplo anterior, se crea un receptor de registro con el prefijo fleet-o11y-
. Este sumidero de registro se crea en el Google Cloud proyecto para enrutar los registros de destino del proyecto de clúster al proyecto host de la flota.
Cuando fleet_scope_logs_config
está habilitado, también se crea un segmento de registro con el nombre fleet-o11y-scope-$SCOPE_NAME
en el proyecto host de la flota, si aún no existe.
En este ejemplo, los registros predeterminados se enviarán al proyecto host de la flota y se conservarán en el proyecto Google Cloud original, mientras que los registros del ámbito de la flota se enviarán al proyecto host de la flota y no se conservarán en el proyecto Google Cloud .
Comprueba que la especificación de la función se haya actualizado:
gcloud container fleet fleetobservability describe
En el resultado se muestra la especificación fleetobservability
actualizada con la configuración, como en el ejemplo siguiente:
createTime: '2022-09-30T16:05:02.222568564Z' membershipStates: projects/123456/locations/us-central1/memberships/cluster-1: state: code: OK description: Fleet monitoring enabled. updateTime: '2023-04-03T20:22:51.436047872Z' name: projects/123456/locations/global/features/fleetobservability resourceState: state: ACTIVE spec: fleetobservability: loggingConfig: defaultConfig: mode: COPY fleetScopeLogsConfig: mode: MOVE state: state: {} updateTime: '2023-04-03T20:38:17.719596966Z'
Los cambios que se hagan en la especificación fleetobservability
pueden tardar unos minutos en aplicarse.
Configurar permisos de registro entre proyectos
Esta sección solo es obligatoria si vas a registrar un clúster en una flota de otro proyecto (también conocido como registro entre proyectos). Para enrutar los registros de los proyectos de clúster al proyecto host de la flota, debes conceder el rol roles/logging.bucketWriter
a la cuenta de servicio de registro de cada proyecto de clúster.
Para obtener las credenciales de la cuenta de servicio de los receptores de los proyectos de clúster, ejecuta el siguiente comando:
FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID FLEET_HOST_PROJECT_NUMBER=$(gcloud projects describe "${FLEET_HOST_PROJECT_ID}" --format "value(projectNumber)") gcloud logging sinks --project=GKE_PROJECT_ID describe fleet-o11y-${FLEET_HOST_PROJECT_NUMBER}-default
Si el comando devuelve un error que indica que no se encuentra el receptor de registro, prueba a volver a ejecutar el comando al cabo de un minuto o dos. Puedes ver la cuenta de servicio en el campo
writerIdentity
de la descripción del receptor, como se muestra en el siguiente ejemplo:createTime: '2023-04-06T02:26:54.716195307Z' destination: logging.googleapis.com/projects/123456/locations/global/buckets/_Default filter: xxx name: fleet-o11y-default updateTime: '2023-04-06T19:03:51.598668462Z' writerIdentity: serviceAccount:service-123456@gcp-sa-logging.iam.gserviceaccount.com
Asigna el rol
roles/logging.bucketWriter
a la cuenta de servicio obtenida:gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "SERVICE_ACCOUNT" \ --role "roles/logging.bucketWriter"
donde:
- SERVICE_ACCOUNT es el nombre de la cuenta de servicio obtenida en el paso anterior. Por ejemplo:
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:service-123456@gcp-sa-logging.iam.gserviceaccount.com" \ --role "roles/logging.bucketWriter"
Conceder acceso a los registros a un equipo
En esta sección se describe cómo conceder acceso a los usuarios para que puedan ver los registros de contenedores y de pods.
Obtén la política de gestión de identidades y accesos del proyecto de la flota y escríbela en un archivo local en formato JSON:
gcloud projects get-iam-policy FLEET_HOST_PROJECT_ID --format json > output.json
Añade una condición de gestión de identidades y accesos que permita a la cuenta de usuario ver los datos del bucket de registro que has creado. Aquí tienes un ejemplo para ver los registros de contenedores y los registros de pods:
{ "bindings": [ { "members": [ "user:USER_ACCOUNT_EMAIL" ], "role": "roles/logging.viewAccessor", "condition": { "title": "Bucket reader condition example", "description": "Grants logging.viewAccessor role to user USER_ACCOUNT_EMAIL for the fleet-o11y-scope-SCOPE_NAME-k8s_container and fleet-o11y-scope-SCOPE_NAME-k8s_pod log view.", "expression": "resource.name == \"projects/FLEET_HOST_PROJECT_ID/locations/global/buckets/fleet-o11y-scope-SCOPE_NAME/views/fleet-o11y-scope-SCOPE_NAME-k8s_container\" || resource.name == \"projects/FLEET_HOST_PROJECT_ID/locations/global/buckets/fleet-o11y-scope-SCOPE_NAME/views/fleet-o11y-scope-SCOPE_NAME-k8s_pod\"" } } ], }
Actualiza la política de gestión de identidades y accesos:
gcloud projects set-iam-policy FLEET_HOST_PROJECT_ID output.json
Para ver más opciones sobre cómo conceder acceso, consulta Controlar el acceso a una vista de registro.
Ver registros de flota
Los administradores de la plataforma tienen acceso para ver todos los registros de todos los espacios de nombres.
Registros predeterminados
Para ver todos los registros predeterminados del bucket _Default
en el proyecto host de tu flota, rellena las variables de la siguiente URL, cópiala y pégala en tu navegador:
https://console.cloud.google.com/logs/query;query=;storageScope=storage,projects%2FFLEET_HOST_PROJECT_ID%2Flocations%2Fglobal%2Fbuckets%2F_Default%2Fviews%2F_Default?jsmode=O&mods=pan_ng2&project=FLEET_HOST_PROJECT_ID
Registros de contenedores y de pods del ámbito de la flota
Los operadores de servicios pueden ver los registros de los espacios de nombres a los que tienen acceso. Para ver los registros de todos los espacios de nombres de un ámbito de flota específico, sigue estos pasos:
Con el proyecto host de la flota seleccionado, vaya a la sección Equipos de la Google Cloud consola.
Haz clic en el ámbito del equipo cuyos registros quieras ver y, a continuación, en la pestaña Registros.
Selecciona Registros de contenedor o Registros de pod para filtrar la vista de registros.
Para ver los registros de un espacio de nombres específico de tu ámbito, sigue estos pasos:
- En la página Equipos, con el ámbito de tu equipo seleccionado, haz clic en la pestaña Espacios de nombres.
- Haga clic en el espacio de nombres cuyos registros quiera ver y, a continuación, en la pestaña Registros.
- Selecciona Registros de contenedor o Registros de pod para filtrar la vista de registros.
También puedes ver los registros del contenedor rellenando las variables de la siguiente URL, copiándola y pegándola en el navegador:
https://console.cloud.google.com/logs/query;query=;storageScope=storage,projects%2FFLEET_HOST_PROJECT_ID%2Flocations%2Fglobal%2Fbuckets%2Ffleet-o11y-scope-SCOPE_NAME%2Fviews%2Ffleet-o11y-scope-SCOPE_NAME-k8s_container?jsmode=O&mods=pan_ng2&project=FLEET_HOST_PROJECT_ID
Para ver los registros de pods de un ámbito de flota específico, rellena las variables de la siguiente URL, cópiala y pégala en tu navegador:
https://console.cloud.google.com/logs/query;query=;storageScope=storage,projects%2FFLEET_HOST_PROJECT_ID%2Flocations%2Fglobal%2Fbuckets%2Ffleet-o11y-scope-SCOPE_NAME%2Fviews%2Ffleet-o11y-scope-SCOPE_NAME-k8s_pod?jsmode=O&mods=pan_ng2&project=FLEET_HOST_PROJECT_ID
Consulta Interfaz del Explorador de registros para obtener más información sobre cómo analizar los datos de registro.
Inhabilitar el registro de flotas
Para inhabilitar la función de registro de flotas, sigue estos pasos:
gcloud
Guarda la siguiente configuración en un archivo llamado
disable_logging_config.json
:{ "loggingConfig": {} }
Actualiza la especificación de la función
fleetobservability
:gcloud container fleet fleetobservability update \ --logging-config=disable_logging_config.json
Terraform
En la configuración de Terraform, actualice todos los modos de enrutamiento de registros a MODE_UNSPECIFIED
. A continuación se muestra un ejemplo:
resource "google_gke_hub_feature" "feature" {
name = "fleetobservability"
location = "global"
spec {
fleetobservability {
logging_config {
default_config {
mode = "MODE_UNSPECIFIED"
}
fleet_scope_logs_config {
mode = "MODE_UNSPECIFIED"
}
}
}
}
}
Comprueba que la especificación de la función se haya actualizado:
gcloud container fleet fleetobservability describe
En el resultado se muestra la especificación fleetobservability
actualizada con tu configuración:
createTime: '2022-09-30T16:05:02.222568564Z' membershipStates: projects/123456/locations/global/memberships/cluster-1: state: code: OK description: Fleet monitoring enabled. updateTime: '2023-04-03T20:22:51.436047872Z' name: projects/123456/locations/global/features/fleetobservability resourceState: state: ACTIVE spec: fleetobservability: loggingConfig: {} state: state: {} updateTime: '2023-04-03T20:38:17.719596966Z'
Los cambios que se hagan en la especificación fleetobservability
pueden tardar unos minutos en aplicarse.
Después de inhabilitar el registro de la flota, los receptores de registro y los filtros de exclusión se eliminarán de tus proyectos. Sin embargo, se conservarán todos los segmentos de registro creados para el ámbito y todas las vistas de registro creadas en el segmento de registro. Para eliminar el bucket de registro de tu proyecto host de flota, consulta Eliminar un bucket.
Actualizar el periodo de conservación de los contenedores de registros
El periodo de conservación predeterminado de un segmento de registros es de 30 días. Para actualizar este periodo, ejecuta el siguiente comando:
gcloud logging buckets update fleet-o11y-scope-SCOPE_NAME --location=global --retention-days=RETENTION_DAYS
donde:
SCOPE_NAME es el nombre del ámbito de la flota.
RETENTION_DAYS es el número de días del nuevo periodo de conservación. Para ver más opciones sobre cómo configurar los segmentos de registro, consulta Gestionar segmentos.
Si amplías el periodo de conservación de un contenedor, las reglas de conservación se aplicarán a partir de ese momento y no de forma retroactiva. Los registros no se pueden recuperar una vez que finaliza el periodo de conservación aplicable.
Referencia de la API
En esta sección se proporciona información sobre los campos que puede añadir al objeto fleetobservability
.
fleetobservability
fleetobservability
define la configuración de observabilidad de la flota.
Campo | Descripción | Esquema | Opcional |
---|---|---|---|
loggingConfig | Especifica si la función de registro de flotas está habilitada en toda la flota. Si no se especifica, la función de registro de la flota se inhabilita para toda la flota. |
loggingConfig | Verdadero |
loggingConfig
loggingConfig
define la configuración de las funciones de registro de flotas en la observabilidad de flotas.
Campo | Descripción | Esquema | Opcional |
---|---|---|---|
defaultConfig | Define el comportamiento de enrutamiento de registros de los registros predeterminados de la flota. | routingConfig | Verdadero |
fleetScopeLogsConfig | Define el comportamiento de enrutamiento de registros de los registros del ámbito de la flota. | routingConfig | Verdadero |
routingConfig
routingConfig
define la configuración del modo de enrutamiento de registros en la función de registro de la flota.
Campo | Descripción | Esquema | Opcional |
---|---|---|---|
modo | Se especifica para habilitar el enrutamiento de registros. Si no se especifica o se indica MODE_UNSPECIFIED, se inhabilita el enrutamiento de registros. Si se define como COPY, los registros se copiarán en el proyecto de destino. Si se define como MOVE, los registros se moverán al proyecto de destino. |
Cadena; uno de los siguientes valores: MOVE, COPY y MODE_UNSPECIFIED | Verdadero |
Restricciones en los nombres
Cuando la observabilidad de la flota está habilitada, el controlador de observabilidad de la flota reserva los siguientes nombres para los objetos de registro que crea. Para evitar comportamientos no deseados o inesperados, no debes usar estos nombres al crear tus propios cubos de registro, sumideros y filtros de exclusión.
Función habilitada | Objeto creado | Nombre usado por la observabilidad de la flota. |
---|---|---|
defaultConfig |
Fregadero | fleet-o11y-FLEET_PROJECT_NUMBER-default |
Filtro de exclusión. | fleet-o11y-FLEET_PROJECT_NUMBER-default-exclusion . Este nombre está reservado en el receptor _Default del proyecto de clúster. |
|
fleetScopeLogsConfig |
Segmento de registros | fleet-o11y-scope-SCOPE_NAME |
fleet-o11y-scope-SCOPE_NAME-k8s_container |
||
fleet-o11y-scope-SCOPE_NAME-k8s_pod |
||
Fregadero | fleet-o11y-FLEET_PROJECT_NUMBER-scope-SCOPE_NAME |
|
Filtro de exclusión | fleet-o11y-FLEET_PROJECT_NUMBER-scope-exclusion |
Solución de problemas
En esta sección se describe cómo solucionar problemas relacionados con el registro de flotas.
Notificación por correo sobre un error de configuración del receptor
Si has recibido un correo con el asunto [ACTION REQUIRED] Cloud Logging sink configuration error in <Your GCP Project>
, significa que la cuenta de servicio de tu sumidero de registros no tiene permiso para escribir registros en el destino del sumidero. Para solucionar este problema, siga los pasos que se indican en Permisos de registro entre proyectos.
Mensaje de error desconocido de la interfaz de usuario de Cloud Logging
Si ves el siguiente error en la interfaz de usuario de Cloud Logging, comprueba que las variables project_id
y scope
que has introducido en la URL sean correctas.
Error: There is an unknown error while executing this operation.
Error de suscripción no encontrada
Es posible que veas el siguiente error:
ERROR: (gcloud.alpha.container.fleet.memberships.bindings.create) NOT_FOUND: Resource 'parent resource not found for projects/...' was not found
Asegúrate de haber registrado el clúster en una flota.