实操:使用 Promtail+Loki 收集 K8s Pod 日志的轻量级方案配置
·
使用 Promtail + Loki 收集 Kubernetes Pod 日志的轻量级方案配置
以下是基于 Helm 的完整配置流程,适用于生产级轻量部署:
一、前置条件
- 已安装
Helm和kubectl - Kubernetes 集群版本 ≥ 1.16
- 集群存储卷支持(推荐使用
local或hostPath轻量存储)
二、部署 Loki(日志存储)
- 添加 Helm 仓库:
helm repo add grafana https://grafana.github.io/helm-charts helm repo update - 创建自定义
loki-values.yaml(轻量配置):loki: commonConfig: replication_factor: 1 # 单副本模式 storage: type: 'filesystem' # 使用本地文件系统 singleBinary: # 单进程模式(轻量) enabled: true replicas: 1 persistence: enabled: true storageClassName: 'local-path' size: 10Gi # 按需调整 - 安装 Loki:
helm install loki grafana/loki -n logging --create-namespace -f loki-values.yaml
三、部署 Promtail(日志采集)
- 创建
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 - 安装 Promtail:
helm install promtail grafana/promtail -n logging -f promtail-values.yaml
四、验证日志采集
- 查看 Pod 状态:
kubectl -n logging get pods -l app.kubernetes.io/name=promtail - 查询日志(需部署 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 | 内存 | 存储 |
|---|---|---|---|
| Loki | 0.5核 | 512MB | 10Gi |
| Promtail | 0.2核 | 100MB | - |
注:实际占用取决于日志吞吐量,单节点日志量建议 ≤ 100MB/s
此方案无需 Sidecar 容器,直接通过 DaemonSet 采集节点日志,显著降低资源开销。
更多推荐
所有评论(0)