使用 Promtail + Loki 收集 Kubernetes Pod 日志的轻量级方案配置

以下是基于 Helm 的完整配置流程,适用于生产级轻量部署:


一、前置条件
  1. 已安装 Helmkubectl
  2. Kubernetes 集群版本 ≥ 1.16
  3. 集群存储卷支持(推荐使用 localhostPath 轻量存储)

二、部署 Loki(日志存储)
  1. 添加 Helm 仓库:
    helm repo add grafana https://grafana.github.io/helm-charts
    helm repo update
    

  2. 创建自定义 loki-values.yaml(轻量配置):
    loki:
      commonConfig:
        replication_factor: 1  # 单副本模式
      storage:
        type: 'filesystem'     # 使用本地文件系统
      singleBinary:            # 单进程模式(轻量)
        enabled: true
        replicas: 1
    persistence:
      enabled: true
      storageClassName: 'local-path'
      size: 10Gi               # 按需调整
    

  3. 安装 Loki:
    helm install loki grafana/loki -n logging --create-namespace -f loki-values.yaml
    


三、部署 Promtail(日志采集)
  1. 创建 promtail-values.yaml
    config:
      clients:
        - url: http://loki.logging.svc.cluster.local:3100/loki/api/v1/push
      snippets:
        scrapeConfigs: |
          - job_name: kubernetes-pods
            kubernetes_sd_configs:
              - role: pod
            relabel_configs:
              - source_labels: [__meta_kubernetes_pod_annotation_name]
                action: keep
                regex: .+  # 采集所有带注解的Pod
              - source_labels: [__meta_kubernetes_pod_node_name]
                target_label: node
              - source_labels: [__meta_kubernetes_namespace]
                target_label: namespace
    

  2. 安装 Promtail:
    helm install promtail grafana/promtail -n logging -f promtail-values.yaml
    


四、验证日志采集
  1. 查看 Pod 状态:
    kubectl -n logging get pods -l app.kubernetes.io/name=promtail
    

  2. 查询日志(需部署 Grafana 或使用 logcli):
    logcli --addr=http://loki.logging.svc.cluster.local:3100 query '{namespace="default"}'
    


五、高级配置示例

仅采集特定 Pod 日志(修改 Promtail 配置):

relabel_configs:
  - source_labels: [__meta_kubernetes_pod_label_app]
    action: keep
    regex: nginx|redis  # 只采集包含这些标签的Pod

日志保留策略(Loki 配置):

loki:
   limits_config:
     retention_period: 168h  # 保留7天


六、资源占用参考
组件CPU内存存储
Loki0.5核512MB10Gi
Promtail0.2核100MB-

注:实际占用取决于日志吞吐量,单节点日志量建议 ≤ 100MB/s

此方案无需 Sidecar 容器,直接通过 DaemonSet 采集节点日志,显著降低资源开销。

更多推荐