All Products
Search
Document Center

Container Service for Kubernetes:Kumpulkan log Pod ECI dengan CRD SLS

Last Updated:Jun 19, 2026

Deploy alibaba-log-controller dan definisikan CRD AliyunLogConfig untuk mengumpulkan log teks dan stdout dari Pod ECI.

Prasyarat

Pastikan Anda telah:

Konfigurasi pengumpulan log

Deploy alibaba-log-controller

  1. Masuk ke Konsol ACK.

  2. Di pojok kiri atas, pilih Wilayah.

  3. Pada halaman Clusters, klik nama kluster Anda.

  4. Di panel navigasi kiri, pilih Operations > Add-ons.

  5. Klik tab Logs and Monitoring, temukan kartu Alibaba-log-controller, lalu klik Install.

  6. Pada dialog konfirmasi, klik OK.

Setelah instalasi selesai, status Installed akan muncul pada kartu Alibaba-log-controller.

Buat CRD AliyunLogConfig

Hubungkan ke kluster ACK Serverless, lalu buat file konfigurasi YAML untuk CRD pengumpulan log.

Perhatikan batasan berikut sebelum membuat CRD:

  • configName harus persis sesuai dengan metadata.name.

  • Pengumpulan log berbasis CRD hanya berlaku untuk Pod ECI yang dibuat setelah CRD tersebut diterapkan. Untuk mengumpulkan log dari Pod yang sudah ada, lakukan rolling update ulang terhadap Pod tersebut.

  • Setelah membuat konfigurasi Logtail melalui CRD, kelola konfigurasi tersebut hanya melalui CRD. Perubahan yang dilakukan di Konsol Simple Log Service (SLS) tidak disinkronkan kembali. Untuk memperbarui konfigurasi, modifikasi langsung CRD AliyunLogConfig.

Templat 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:
      ...

Parameter dasar

Parameter Tipe Wajib Deskripsi
project string Tidak Nama proyek SLS. Nilai default adalah proyek instalasi Logtail. Akan dibuat otomatis jika belum ada.
logstore string Ya Nama penyimpanan log. Akan dibuat otomatis jika belum ada.
logstoreMode string Tidak Jenis penyimpanan log. Nilai yang valid: query, standard. Hanya berlaku saat pembuatan. Lihat Kelola penyimpanan log.
shardCount int Tidak Jumlah shard. Nilai yang valid: 1–10. Default: 2.
lifeCycle int Tidak Periode retensi log dalam hari. Nilai yang valid: 1–3650. Default: 90. Nilai 3650 berarti permanen. Hanya berlaku saat pembuatan.
machineGroups array Tidak Kelompok mesin. SLS secara otomatis membuat k8s-group-${your_k8s_cluster_id} saat instalasi Logtail.
logtailConfig object Ya Konfigurasi Logtail. Lihat sub-parameter di bawah.

Sub-parameter logtailConfig:

Sub-parameter Deskripsi
configName Nama konfigurasi Logtail. Harus sesuai dengan metadata.name.
inputType Jenis sumber log. plugin: sumber stdout dan berbasis plugin (seperti log biner MySQL). file: log teks dengan pola tetap seperti regex atau delimiter.
inputDetail Konfigurasi input detail.
outputType Jenis output. Tetapkan ke LogService. Log hanya dapat dikirim ke SLS.
outputDetail Konfigurasi output detail.
logSample Contoh entri log.

Lihat konfigurasi Logtail.

Filtering kontainer

Opsi filtering bergantung pada versi Logtail Anda.

Logtail versi sebelum v1.0.34 — hanya dapat difilter berdasarkan variabel lingkungan dan label kontainer.

Namespace Kubernetes dan nama kontainer dipetakan ke label berikut:

  • Namespace: io.kubernetes.pod.namespace

  • Nama kontainer: io.kubernetes.container.name

Gunakan label ini untuk memfilter kontainer. Jika tidak mencukupi, gunakan daftar putih atau blacklist variabel lingkungan.

Logtail v1.0.34 dan yang lebih baru — dapat difilter berdasarkan metadata tingkat Kubernetes, termasuk nama Pod, namespace, nama kontainer, dan label.

Konfigurasikan parameter filtering di logtailConfig.inputDetail.advanced.k8s:

Parameter Deskripsi
IncludeK8sLabel Daftar putih label Kubernetes — kontainer yang akan dimasukkan
ExcludeK8sLabel Blacklist label Kubernetes — kontainer yang akan dikecualikan
K8sNamespaceRegex Filter berdasarkan namespace (regex)
K8sPodRegex Filter berdasarkan nama Pod (regex)
K8sContainerRegex Filter berdasarkan nama kontainer (regex)

Lihat Kumpulkan log teks dari kontainer Kubernetes dalam mode DaemonSet dan Kumpulkan stdout dan stderr dari kontainer Kubernetes dalam mode DaemonSet (versi lama).

Contoh: kumpulkan log teks

Buat file log-file.yaml dengan konten berikut:

apiVersion: log.alibabacloud.com/v1alpha1  # Gunakan nilai default. Jangan ubah.
kind: AliyunLogConfig                      # Gunakan nilai default. Jangan ubah.
metadata:
  name: test-file                  # Nama resource unik di kluster Kubernetes.
spec:
  project: k8s-log-c326bc86****    # Opsional. Dibuat otomatis jika proyek belum ada.
  logstore: test-file              # Wajib. Dibuat otomatis jika penyimpanan log belum ada.
  logtailConfig:
    inputType: file                # file = log teks; plugin = log stdout.
    configName: test-file          # Harus sesuai dengan metadata.name.
    inputDetail:
      logType: common_reg_log      # Mode simple.
      logPath: /log/               # Direktori file log.
      filePattern: "*.log"         # Pola nama file log. Mendukung * dan ?.
      dockerFile: true             # Tetapkan ke true untuk mengumpulkan dari kontainer.
      advanced:
        k8s:
          K8sNamespaceRegex: ^(default)$
          K8sPodRegex: '^(eci-sls-demo.*)$'

Contoh: kumpulkan log stdout

Buat file log-stdout.yaml dengan konten berikut:

apiVersion: log.alibabacloud.com/v1alpha1   # Gunakan nilai default. Jangan ubah.
kind: AliyunLogConfig                       # Gunakan nilai default. Jangan ubah.
metadata:
  name: test-stdout               # Nama resource unik di kluster Kubernetes.
spec:
  project: k8s-log-c326bc86****   # Opsional. Dibuat otomatis jika proyek belum ada.
  logstore: test-stdout           # Wajib. Dibuat otomatis jika penyimpanan log belum ada.
  shardCount: 2                   # Opsional. Default: 2. Nilai yang valid: 1–10.
  lifeCycle: 90                   # Opsional. Default: 90 hari. Nilai yang valid: 1–3650. 3650 = permanen.
  logtailConfig:
    inputType: plugin             # plugin = log stdout; file = log teks.
    configName: test-stdout       # Harus sesuai dengan metadata.name.
    inputDetail:
      plugin:
        inputs:
          - type: service_docker_stdout
            detail:
              Stdout: true
              Stderr: true
#              IncludeEnv:
#                aliyun_logs_test-stdout: "stdout"

Terapkan konfigurasi CRD

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

Setelah konfigurasi diterapkan, Logtail akan mengumpulkan log stdout atau teks dari setiap kontainer dan mengirimkannya ke SLS.

Penting

Buat indeks di penyimpanan log agar dapat melakukan kueri dan analisis. Lihat Buat indeks.

Uji pengumpulan log

Setelah membuat CRD, log dari Pod yang baru dibuat akan dikumpulkan secara otomatis. Verifikasi pengaturan dengan langkah-langkah berikut.

Buat aplikasi uji

Buat file test-sls-crd.yaml dengan Penyebaran berikut. Kontainer menulis ke stdout dan file log sekaligus.

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

Verifikasi status Pod

kubectl get pod

Output yang diharapkan:

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

Lihat log yang terkumpul

  1. Masuk ke Konsol SLS.

  2. Klik nama proyek.

  3. Klik penyimpanan log untuk kontainer Anda guna melihat log.

Pengumpulan log teks:

Text log collection

Pengumpulan log stdout:

Stdout log collection

Nonaktifkan pengumpulan log untuk Pod tertentu

Secara default, CRD mengumpulkan log dari semua Pod yang sesuai. Untuk mengecualikan Pod tertentu, tambahkan anotasi k8s.aliyun.com/eci-sls-enable: "false" ke metadata Pod.

Penting
  • Tambahkan anotasi di spec.template.metadata, bukan di metadata tingkat atas.

  • Anotasi hanya berlaku saat pembuatan Pod. Perubahan selama pembaruan Pod tidak berpengaruh.

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"    # Menonaktifkan pengumpulan log.
    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