Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Collect ECI Pod logs with an SLS CRD

Última actualización: Sep 04, 2026

Despliegue alibaba-log-controller y defina CRD AliyunLogConfig para recopilar registros de texto y stdout de los pods ECI.

Requisitos previos

Asegúrese de cumplir con lo siguiente:

Configuración de la recolección de registros

Despliegue de alibaba-log-controller

  1. Inicie sesión en la consola de ACK.

  2. En la esquina superior izquierda, seleccione una región.

  3. En la página Clusters, haga clic en el nombre de su clúster.

  4. En el panel de navegación izquierdo, elija Operations > Add-ons.

  5. Haga clic en la pestaña Logs and Monitoring, busque la tarjeta Alibaba-log-controller y haga clic en Install.

  6. En el cuadro de diálogo de confirmación, haga clic en OK.

Después de la instalación, aparece Installed en la tarjeta Alibaba-log-controller.

Creación de un CRD AliyunLogConfig

Conéctese al clúster ACK Serverless y escriba un archivo de configuración YAML para el CRD de recolección de registros.

Tenga en cuenta las siguientes restricciones antes de crear el CRD:

  • configName debe coincidir exactamente con metadata.name.

  • La recolección de registros basada en CRD solo aplica a los pods ECI creados después del CRD. Para recopilar registros de pods existentes, vuelva a crearlos mediante una actualización continua.

  • Después de crear una configuración de Logtail mediante el CRD, gestiónele exclusivamente a través del CRD. Los cambios realizados en la consola de Simple Log Service (SLS) no se sincronizan de vuelta. Para actualizar, modifique directamente el CRD AliyunLogConfig.

Plantilla del CRD

apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
  name: simple-stdout-example
spec:
  project: k8s-my-project
  logstore: k8s-stdout
  logstoreMode: standard
  shardCount: 2
  lifeCycle: 90
  logtailConfig:
    inputType: plugin
    configName: simple-stdout-example
    inputDetail:
      ...

Parámetros básicos

Parámetro

Tipo

Obligatorio

Descripción

project

string

No

Nombre del proyecto de SLS. El valor predeterminado es el proyecto de instalación de Logtail. Se crea automáticamente si no existe.

logstore

string

Sí

Nombre del logstore. Se crea automáticamente si no existe.

logstoreMode

string

No

Tipo de logstore. Valores válidos: query, standard. Solo tiene efecto durante la creación. Consulte Gestión de un logstore.

shardCount

int

No

Número de shards. Valores válidos: 1–10. Valor predeterminado: 2.

lifeCycle

int

No

Periodo de retención de registros en días. Valores válidos: 1–3650. Valor predeterminado: 90. 3650 equivale a permanente. Solo tiene efecto durante la creación.

machineGroups

array

No

Grupo de máquinas. SLS crea automáticamente k8s-group-${your_k8s_cluster_id} al instalar Logtail.

logtailConfig

object

Sí

Configuración de Logtail. Consulte los subparámetros a continuación.

Subparámetros de logtailConfig:

Subparámetro

Descripción

configName

Nombre de la configuración de Logtail. Debe coincidir con metadata.name.

inputType

Tipo de origen de registros. plugin: fuentes basadas en stdout y plugins (como registros binarios de MySQL). file: registros de texto con modos fijos como expresiones regulares o delimitadores.

inputDetail

Configuración detallada de entrada.

outputType

Tipo de salida. Establezca este valor en LogService. Los registros solo pueden enviarse a SLS.

outputDetail

Configuración detallada de salida.

logSample

Una entrada de registro de ejemplo.

Consulte Configuraciones de Logtail.

Filtrado de contenedores

Las opciones de filtrado dependen de su versión de Logtail.

Logtail anterior a v1.0.34: filtre únicamente por variables de entorno y etiquetas de contenedor.

El namespace de Kubernetes y el nombre del contenedor se asignan a estas etiquetas:

  • Namespace: io.kubernetes.pod.namespace

  • Nombre del contenedor: io.kubernetes.container.name

Utilice estas etiquetas para filtrar contenedores. Si resultan insuficientes, use listas de permitidos o listas de bloqueados de variables de entorno.

Logtail v1.0.34 y posteriores: filtre por metadatos a nivel de Kubernetes, incluidos el nombre del pod, el namespace, el nombre del contenedor y las etiquetas.

Configure los parámetros de filtrado en logtailConfig.inputDetail.advanced.k8s:

Parámetro

Descripción

IncludeK8sLabel

Lista de permitidos de etiquetas de Kubernetes: contenedores que se incluirán

ExcludeK8sLabel

Lista de bloqueados de etiquetas de Kubernetes: contenedores que se excluirán

K8sNamespaceRegex

Filtrar por namespace (expresión regular)

K8sPodRegex

Filtrar por nombre de pod (expresión regular)

K8sContainerRegex

Filtrar por nombre de contenedor (expresión regular)

Consulte Recolección de registros de texto de contenedores Kubernetes en modo DaemonSet y Recolección de stdout y stderr de contenedores Kubernetes en modo DaemonSet (versión anterior).

Ejemplo: recolección de registros de texto

Cree log-file.yaml con el siguiente contenido:

apiVersion: log.alibabacloud.com/v1alpha1  # Use the default value. Do not modify.
kind: AliyunLogConfig                      # Use the default value. Do not modify.
metadata:
  name: test-file                  # Unique resource name in the Kubernetes cluster.
spec:
  project: k8s-log-c326bc86****    # Optional. Auto-created if the project does not exist.
  logstore: test-file              # Required. Auto-created if the Logstore does not exist.
  logtailConfig:
    inputType: file                # file = text logs; plugin = stdout logs.
    configName: test-file          # Must match metadata.name.
    inputDetail:
      logType: common_reg_log      # Simple mode.
      logPath: /log/               # Log file directory.
      filePattern: "*.log"         # Log file name pattern. Supports * and ?.
      dockerFile: true             # Set to true to collect from containers.
      advanced:
        k8s:
          K8sNamespaceRegex: ^(default)$
          K8sPodRegex: '^(eci-sls-demo.*)$'

Ejemplo: recolección de registros stdout

Cree log-stdout.yaml con el siguiente contenido:

apiVersion: log.alibabacloud.com/v1alpha1   # Use the default value. Do not modify.
kind: AliyunLogConfig                       # Use the default value. Do not modify.
metadata:
  name: test-stdout               # Unique resource name in the Kubernetes cluster.
spec:
  project: k8s-log-c326bc86****   # Optional. Auto-created if the project does not exist.
  logstore: test-stdout           # Required. Auto-created if the Logstore does not exist.
  shardCount: 2                   # Optional. Default: 2. Valid values: 1–10.
  lifeCycle: 90                   # Optional. Default: 90 days. Valid values: 1–3650. 3650 = permanent.
  logtailConfig:
    inputType: plugin             # plugin = stdout logs; file = text logs.
    configName: test-stdout       # Must match metadata.name.
    inputDetail:
      plugin:
        inputs:
          - type: service_docker_stdout
            detail:
              Stdout: true
              Stderr: true
#              IncludeEnv:
#                aliyun_logs_test-stdout: "stdout"

Aplicación de la configuración del CRD

kubectl apply -f log-file.yaml
kubectl apply -f log-stdout.yaml

Después de aplicar la configuración, Logtail recopila registros stdout o de texto de cada contenedor y los envía a SLS.

Importante

Cree índices en el logstore para habilitar la consulta y el análisis. Consulte Creación de índices.

Prueba de la recolección de registros

Después de crear el CRD, los registros de los pods recién creados se recopilan automáticamente. Compruebe la configuración con estos pasos.

Creación de una aplicación de prueba

Cree test-sls-crd.yaml con el siguiente Deployment. El contenedor escribe tanto en stdout como en un archivo de registros.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: eci-sls-demo
  labels:
    app: sls
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sls
  template:
    metadata:
      name: sls-test
      labels:
        app: sls
        alibabacloud.com/eci: "true"
    spec:
      containers:
      - args:
        - -c
        - mkdir -p /log;while true; do echo hello world; date; echo hello sls >> /log/busy.log; sleep 1;done
        command:
        - /bin/sh
        image: registry-vpc.cn-beijing.aliyuncs.com/eci_open/busybox:1.30
        imagePullPolicy: Always
        name: busybox
kubectl create -f test-sls-crd.yaml

Verificación del estado del pod

kubectl get pod

Salida esperada:

NAME                            READY   STATUS    RESTARTS   AGE
eci-sls-demo-7bf8849b9f-cgpbn   1/1     Running   0          2m14s

Consulta de los registros recopilados

  1. Inicie sesión en la consola de SLS.

  2. Haga clic en el nombre del proyecto.

  3. Haga clic en el logstore correspondiente a sus contenedores para consultar los registros.

Recolección de registros de texto:

Text log collection

Recolección de registros stdout:

Stdout log collection

Deshabilitación de la recolección de registros para pods específicos

De forma predeterminada, el CRD recopila registros de todos los pods coincidentes. Para excluir pods específicos, agregue la anotación k8s.aliyun.com/eci-sls-enable: "false" a los metadatos del pod.

Importante
  • Agregue las anotaciones en spec.template.metadata, no en los metadatos de nivel superior.

  • Las anotaciones solo tienen efecto durante la creación del pod. Los cambios realizados durante las actualizaciones del pod no surten efecto.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: eci-sls-demo2
  labels:
    app: sls
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sls
  template:
    metadata:
      name: sls-test
      labels:
        app: sls
        alibabacloud.com/eci: "true"
      annotations:
        k8s.aliyun.com/eci-sls-enable: "false"    # Disables log collection.
    spec:
      containers:
      - args:
        - -c
        - mkdir -p /log;while true; do echo hello world; date; echo hello sls >> /log/busy.log; sleep 1;
          done
        command:
        - /bin/sh
        image: registry.cn-shanghai.aliyuncs.com/eci_open/busybox:1.30
        imagePullPolicy: Always
        name: busybox