ZBLOG

fluentd收集k8s集群日志写到到文件完整

要将Kubernetes集群的日志收集到文件中,可以使用Fluentd和Fluent Bit。以下是一个完整的步骤:

  1. 在Kubernetes集群上安装Fluentd或Fluent Bit。

  2. 创建一个ConfigMap来定义日志收集器配置。例如:

apiVersion: v1
kind: ConfigMap
metadata:
  name: fluentd-config
  namespace: kube-system
data:
  fluent.conf: |
    <source>
      @type tail
      path /var/log/containers/*.log
      pos_file /var/log/fluentd-containers.log.pos
      tag kubernetes.*
      format json
      read_from_head true
    </source>

    <match **>
       @type file
       path /var/log/kube-logs/${tag}/%Y/%m/%d/kubernetes.${tag}.log
       flush_interval 5s
       create_symlink true  
    </match>

这个配置指定了从/var/log/containers/*.log路径下读取容器日志,并将其标记为kubernetes.*。然后将所有标签匹配到的日志写入到/var/log/kube-logs/${tag}/%Y/%m/%d/kubernetes.${tag}.log路径下,并设置了一个刷新间隔和创建符号链接选项。

  1. 部署一个DaemonSet来运行Fluentd或Fluent Bit实例。例如:
apiVersion: apps/v1beta2 
kind: DaemonSet 
metadata:
  name: fluent-bit 
  namespace: kube-system 
spec:
  selector:
    matchLabels:
      app: fluent-bit 
  template:
    metadata:
      labels:
        app: fluent-bit 
    spec:
      containers:
      - name: fluent-bit 
        image: fluent/fluent-bit:latest 
        env:
          - name: FLUENT_UID 
            value: "0" 
        volumeMounts:
        - name: config-volume
          mountPath: /fluent-bit/etc/
      volumes:
      - name: config-volume
        configMap:
          name: fluentd-config
  updateStrategy:
    type: RollingUpdate

这个DaemonSet使用Fluent Bit镜像来运行,并指定了一个ConfigMap挂载到/fluent-bit/etc/路径下。

  1. 在Kubernetes中启用聚合层。例如:
apiVersion: v1
kind: ServiceAccount
metadata:
  name: fluentd-aggregator
  namespace: kube-system

---

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: fluentd-aggregator-rolebinding
subjects:
- kind: ServiceAccount
  name: fluentd-aggregator
  namespace :kube-system 
roleRef:
  kind : ClusterRole     
  name : view            
  apiGroup : rbac.authorization.k8s.io 

---

apiVersion : extensions/v1beta1   
kind : Deployment               
metadata :
   namespace : kube-system    
   labels :
     k8s-app : aggregator-fluentd  
   name : aggregator-fluentd      
spec :
   replicas : 2                 
   template :
     metadata :
       labels :
         k8s-app : aggregator-fluentd  
     spec :
       serviceAccountName : fluentd-aggregator  
       containers :
       - image : kiwigrid/fluentd-kubernetes-daemonset:v0.12.43-kafka-0.10.2
         name : fluentd-aggregator 

这个配置将创建一个聚合器,它会收集所有节点的日志,并将其发送到Fluentd实例。

  1. 确认文件已经成功写入。您可以通过SSH连接到Fluentd或Fluent Bit容器并检查文件是否存在来验证它们是否正在写入。

以上是完整的步骤,它们可以帮助您将Kubernetes集群的日志收集到文件中。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=3644

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?