自建K8S集群对接阿里云SLS

阿里云 SLS DaemonSet 模式采集 K8s 日志 完整部署教程

本文基于 DaemonSet + LoongCollector(新一代 Logtail),覆盖 ACK 集群 / 自建 K8s 集群,从安装采集组件 → 创建日志库 → 配置采集 → 结构化解析 → 验证排错,一站式部署。


一、前置说明

1. 核心概念

  • Project:SLS 资源隔离单元,全局唯一
  • Logstore:日志存储单元
  • LoongCollector :SLS 新一代采集 Agent,与旧 logtail-ds 不可共存
  • DaemonSet:每节点 1 个采集容器,资源占用低,适合全集群统一采集

2. 环境要求

  • K8s 1.6+
  • 已安装 kubectl 并连接集群
  • 账号具备 AliyunLogFullAccess 权限
  • 容器运行时:Docker /containerd(需访问 sock 权限)

二、步骤 1:安装 LoongCollector(二选一)

自建 K8s 集群(手动安装)

  1. 下载安装包(国内 / 海外二选一)

    国内

    wget https://aliyun-observability-release-cn-shanghai.oss-cn-shanghai.aliyuncs.com/loongcollector/k8s-custom-pkg/3.0.12/loongcollector-custom-k8s-package.tgz
    tar xvf loongcollector-custom-k8s-package.tgz
    chmod 744 ./loongcollector-custom-k8s-package/k8s-custom-install.sh

  2. 修改配置 loongcollector/values.yaml(必填项)

    projectName: "k8s-log-custom-xxx" # 自定义Project名
    region: "cn-beijing" # 地域
    aliUid: "123456789" # 阿里云主账号UID
    accessKeyID: "xxx" # 具备SLS权限AK
    accessKeySecret: "xxx"
    clusterID: "custom-k8s-01" # 自定义集群ID
    net: Internet # 公网/内网Intranet

  3. 执行安装

    cd loongcollector-custom-k8s-package
    bash k8s-custom-install.sh install

  4. 检查 Pod 状态

    kubectl get po -n kube-system | grep loongcollector-ds


三、步骤 2:创建业务 Logstore

  1. 登录 SLS 控制台

  2. 进入自动创建的 Project(k8s-log-xxx

  3. 左侧 日志存储 > 日志库+ 创建 Logstore

  4. 填写名称(如 app-lognginx-log),其余默认 → 确定


四、步骤 3:创建采集配置(二选一)

配置 1:采集容器标准输出(stdout/stderr)

  1. 进入目标 Logstore → 数据接入
  2. 搜索模板:K8s - 标准输出 - 新版 → 立即接入
  3. 机器组配置:
    • 选择 ACK Daemonset / 自建集群 Daemonset
    • 勾选 k8s-group-${cluster_id} → 添加到应用机器组 → 下一步
  4. Logtail 配置:
    • 配置名称:如 k8s-stdout-ds
    • 打开 标准输出 / 标准错误
  5. 查询分析:自动生成索引 → 完成

六、步骤 4:高级配置

1. 多行日志(Java 堆栈)

  • 处理配置 → 开启 多行模式
  • 类型:自定义
  • 行首正则:^\[\d+-\d+-\w+:\d+:\d+,\d+]

2. 日志脱敏

  • 插件:脱敏处理
  • 方式:const(替换为 ***)/md5
  • 表达式匹配手机号、身份证、密码等

3. 容器过滤

  • 按 Namespace / Pod 名 / 容器名 / Pod 标签正则过滤
  • 示例:Namespace 白名单 ^(default|prod)$

4. 日志标签富化

  • 添加 Pod 标签、环境变量到日志字段,便于溯源

七、步骤 5:验证与排错

1. 验证采集

  1. 进入 SLS → Logstore → 查询分析
  2. 执行查询 *,查看是否有日志流入

2. 无数据排查(必看)

  1. 检查是否有增量日志(无新增不采集)

  2. 检查 LoongCollector Pod

    kubectl get po -n kube-system | grep loongcollector

  3. 进入容器查看日志

    kubectl exec -it -n kube-system loongcollector-ds-xxx -- bash
    cd /usr/local/ilogtail
    cat ilogtail.LOG
    cat logtail_plugin.LOG

  4. 检查机器组心跳

    • SLS → 资源 → 机器组 → 状态必须为 ok
  5. 检查采集过滤条件是否过严


八、常见注意事项

  1. LoongCollector 与 logtail-ds 不可共存,升级需先卸载旧版
  2. 容器日志路径必须是绝对路径,不支持软链接
  3. 采集路径需 ≥ 挂载点路径,否则无法读取
  4. 不要修改 / 删除 config-operation-log
  5. 跨账号采集:在 values.yaml 填写目标账号 AK/UID/Project

九、后续使用

  • 查询分析:配置索引后用 SQL 分析日志
  • 可视化:创建仪表盘展示 QPS、延迟、错误率
  • 告警:配置异常告警(如 5xx 报错、日志断流)
相关推荐
johnny2332 小时前
K8s管理面板:Rancher、Lens、KubeSphere、K8s Dashboard、Kite
容器·kubernetes·rancher
QC·Rex3 小时前
Kubernetes v1.36 云原生架构新特性详解:生产级集群升级指南
云原生·kubernetes·serviceaccount·selinux·集群升级·ingress nginx·动态资源分配
人工智能知识库3 小时前
阿里云云计算ACA/ACP题库(26年最新)
阿里云·云计算·题库·acp·aca
张3239 小时前
K8s控制器学习难点
云原生·容器·kubernetes
qwy71522925816311 小时前
1-Docker Engine 安装前置环境配置
运维·docker·容器
sszdzq14 小时前
docker 安装 doris
运维·docker·容器
海的透彻16 小时前
docker容器进程探究
运维·docker·容器
❀͜͡傀儡师16 小时前
ShadowBroker:实时全球情报地图,开源情报(OSINT)的终极聚合平台
docker·容器·llama
么卡17 小时前
我在 Debian 11 上把 K8s 单机搭起来了,过程没你想的那么顺(/opt 目录版)
kubernetes