Todos os produtos
Search
Central de documentação

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

Última atualização: Jun 27, 2026

Implante o alibaba-log-controller e defina CRDs AliyunLogConfig para coletar logs de texto e stdout de Pods ECI.

Pré-requisitos

Certifique-se de que:

Configure a coleta de logs

Implantar o alibaba-log-controller

  1. Faça login no console ACK.

  2. No canto superior esquerdo, selecione uma região.

  3. Na página Clusters, clique em nome do cluster.

  4. No painel de navegação à esquerda, escolha Operations > Add-ons.

  5. Clique em aba Logs and Monitoring, localize o cartão Alibaba-log-controller e clique em Install.

  6. Na caixa de diálogo de confirmação, clique em OK.

Após a instalação, o status Installed aparece no cartão Alibaba-log-controller.

Crie um CRD AliyunLogConfig

Conecte-se ao cluster ACK Serverless e crie um arquivo de configuração YAML para o CRD de coleta de logs.

Observe as seguintes restrições antes de criar o CRD:

  • O valor de configName deve corresponder exatamente a metadata.name.

  • A coleta de logs baseada em CRD aplica-se apenas a Pods ECI criados após a definição do CRD. Para coletar logs de Pods existentes, recrie-os por meio de uma atualização contínua (rolling update).

  • Após criar uma configuração do Logtail via CRD, gerencie-a exclusivamente pelo CRD. Alterações feitas no console do Simple Log Service (SLS) não são sincronizadas de volta. Para atualizar, modifique diretamente o CRD AliyunLogConfig.

Modelo de 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

Obrigatório

Descrição

project

string

Não

Nome do projeto SLS. O padrão é o projeto de instalação do Logtail. Criado automaticamente se não existir.

logstore

string

Sim

Nome do Logstore. Criado automaticamente se não existir.

logstoreMode

string

Não

Tipo do Logstore. Valores válidos: query, standard. Tem efeito apenas na criação. Consulte Gerenciar um Logstore.

shardCount

int

Não

Número de shards. Valores válidos: 1–10. Padrão: 2.

lifeCycle

int

Não

Período de retenção de logs em dias. Valores válidos: 1–3650. Padrão: 90. 3650 indica retenção permanente. Tem efeito apenas na criação.

machineGroups

array

Não

Grupo de máquinas. O SLS cria automaticamente o grupo k8s-group-${your_k8s_cluster_id} durante a instalação do Logtail.

logtailConfig

object

Sim

Configuração do Logtail. Consulte os subparâmetros abaixo.

Subparâmetros de logtailConfig:

Subparâmetro

Descrição

configName

Nome da configuração do Logtail. Deve corresponder a metadata.name.

inputType

Tipo de source do log. plugin: stdout e sources baseadas em plugins (como logs binários do MySQL). file: logs de texto com modos fixos, como regex ou delimitador.

inputDetail

Configuração detalhada de entrada.

outputType

Tipo de saída. Defina como LogService. Os logs só podem ser enviados para o SLS.

outputDetail

Configuração detalhada de saída.

logSample

Uma entrada de log de exemplo.

Consulte Configurações do Logtail.

Filtragem de contêineres

As opções de filtragem dependem da versão do Logtail.

Logtail anterior à v1.0.34 — filtre apenas por variáveis de ambiente e rótulos de contêiner.

O namespace do Kubernetes e o nome do contêiner correspondem aos seguintes rótulos:

  • Namespace: io.kubernetes.pod.namespace

  • Nome do contêiner: io.kubernetes.container.name

Use esses rótulos para filtrar contêineres. Caso não sejam suficientes, utilize listas de permissões ou listas de bloqueios de variáveis de ambiente.

Logtail v1.0.34 e posterior — filtre por metadados de nível Kubernetes, incluindo nome do Pod, namespace, nome do contêiner e rótulos.

Configure os parâmetros de filtragem em logtailConfig.inputDetail.advanced.k8s:

Parâmetro

Descrição

IncludeK8sLabel

Lista de permissões de rótulos Kubernetes — contêineres a incluir

ExcludeK8sLabel

Lista de bloqueios de rótulos Kubernetes — contêineres a excluir

K8sNamespaceRegex

Filtrar por namespace (regex)

K8sPodRegex

Filtrar por nome do Pod (regex)

K8sContainerRegex

Filtrar por nome do contêiner (regex)

Consulte Coletar logs de texto de contêineres Kubernetes no modo DaemonSet e Coletar stdout e stderr de contêineres Kubernetes no modo DaemonSet (versão antiga).

Exemplo: coletar logs de texto

Crie o arquivo log-file.yaml com o seguinte conteúdo:

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.*)$'

Exemplo: coletar logs de stdout

Crie o arquivo log-stdout.yaml com o seguinte conteúdo:

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"

Aplicar a configuração do CRD

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

Após aplicar a configuração, o Logtail coleta logs de stdout ou texto de cada contêiner e os envia para o SLS.

Importante

Crie índices no Logstore para habilitar consultas e análises. Consulte Criar índices.

Testar a coleta de logs

Após a criação do CRD, os logs dos novos Pods são coletados automaticamente. Verifique a configuração seguindo estas etapas.

Crie uma aplicação de teste

Crie o arquivo test-sls-crd.yaml com o seguinte Deployment. O contêiner grava tanto no stdout quanto em um arquivo de log.

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

Verifique o status do Pod

kubectl get pod

Saída esperada:

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

Visualize logs coletados

  1. Faça login no console SLS.

  2. Clique em nome do projeto.

  3. Clique em Logstore correspondente aos seus contêineres para visualizar os logs.

Coleta de logs de texto:

Text log collection

Coleta de logs de stdout:

Stdout log collection

Desativar a coleta de logs para Pods específicos

Por padrão, o CRD coleta logs de todos os Pods correspondentes. Para excluir Pods específicos, adicione a anotação k8s.aliyun.com/eci-sls-enable: "false" aos metadados do Pod.

Importante
  • Adicione as anotações em spec.template.metadata, e não nos metadados de nível superior.

  • As anotações têm efeito apenas na criação do Pod. Alterações durante atualizações do Pod não surtem efeito.

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