zoukankan      html  css  js  c++  java
  • k8s 部署 log-pilot 收集容器标准输出日志和指定路径应用日志

    日志系统要求:
    1.因开发项目要求,一个pod 内有多个日志路径,需要收集
    2.同时需要收集pod 容器的标准输出日志
    
    环境:
    本次环境es、kibana 均部署在k8s 集群外,在物理机部署,只需要log-pilot 指定es 地址
    
    具体步骤:
    创建 daemonset log-pilot
    kubectl get daemonsets.apps      log-pilot    -o yaml
    
    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      labels:
        k8s-app: log-pilot
      name: log-pilot
      namespace: default
    spec:
      selector:
        matchLabels:
          k8s-app: log-es
      template:
        metadata:
          labels:
            k8s-app: log-es
        spec:
          containers:
          - env:
            - name: NODE_NAME
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: spec.nodeName
            - name: PILOT_LOG_PREFIX
              value: mytest         #收集容器日志前缀标识,容器日志必须指定同一标识 mytest
            - name: FILEBEAT_OUTPUT
              value: elasticsearch  #日志指定输出位置为 es 
            - name: ELASTICSEARCH_HOST
              value: 10.16.0.178    # es 地址
            - name: ELASTICSEARCH_PORT
              value: "9200" # es 端口
            image: yzsjhl-evdc-node03.opi.com/tj/log-pilot:0.9.5-filebeatv01
            imagePullPolicy: IfNotPresent
            name: log-pilot
            resources:
              limits:
                memory: 200Mi
              requests:
                cpu: 100m
                memory: 200Mi
            securityContext:
              capabilities:
                add:
                - SYS_ADMIN
            terminationMessagePath: /dev/termination-log
            terminationMessagePolicy: File
            volumeMounts:
            - mountPath: /var/run/docker.sock
              name: sock
            - mountPath: /host
              name: root
              readOnly: true
            - mountPath: /var/lib/filebeat
              name: varlib
            - mountPath: /var/log/filebeat
              name: varlog
          dnsPolicy: ClusterFirst
          restartPolicy: Always
          schedulerName: default-scheduler
          securityContext: {}
          terminationGracePeriodSeconds: 30
          volumes:
          - hostPath:
              path: /var/run/docker.sock
              type: ""
            name: sock
          - hostPath:
              path: /
              type: ""
            name: root
          - hostPath:
              path: /var/lib/filebeat
              type: DirectoryOrCreate
            name: varlib
          - hostPath:
              path: /var/log/filebeat
              type: DirectoryOrCreate
            name: varlog
      updateStrategy:
        rollingUpdate:
          maxUnavailable: 1
        type: RollingUpdate
    
    
    创建应用容器deployments  (java 项目),有三个日志路径需要收集
    
    $ kubectl get deployments.apps   gateway-deploy    -o yaml
    
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gateway-deploy
      namespace: default
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: gateway
          release: stabel
      strategy:
        rollingUpdate:
          maxSurge: 25%
          maxUnavailable: 25%
        type: RollingUpdate
      template:
        metadata:
          creationTimestamp: null
          labels:
            app: gateway
            env: test
            release: stabel
        spec:
          containers:
          - env:
            - name: TZ
              value: Asia/Shanghai   
            - name: mytest_logs_gatewaystdout  # 容器的标准输出日志
              value: stdout
            - name: mytest_logs_gatewayaccesslogdir  #第一个应用日志 
              value: /data/logs/service-gateway/access/*.log
            - name: mytest_logs_gatewayauthlogdir #第二个应用日志 
              value: /data/logs/service-gateway/auth/*.log
            - name: mytest_logs_gatewayrootlogdir #第三个应用日志 
              value: /data/logs/service-gateway/root/*.log
            image: yzsjhl-evdc-node03.opi.com/renren-backend/gateway:20200519161529
            imagePullPolicy: IfNotPresent
            name: gateway
            ports:
            - containerPort: 8089
              name: http1
              protocol: TCP
            - containerPort: 20007
              name: http2
              protocol: TCP
            resources: {}
            terminationMessagePath: /dev/termination-log
            terminationMessagePolicy: File
            volumeMounts: # 每个日志 emptyDir都需要挂载在容器日志的指定位置
            - mountPath: /data/logs/service-gateway/access
              name: gatewayaccess-logs
            - mountPath: /data/logs/service-gateway/auth
              name: gatewayauth-logs
            - mountPath: /data/logs/service-gateway/root
              name: gatewayroot-logs
          dnsPolicy: ClusterFirst
          restartPolicy: Always
          schedulerName: default-scheduler
          securityContext: {}
          terminationGracePeriodSeconds: 30
          volumes:
          - emptyDir: {}   # 每个日志路径都需要指定一个 emptyDir
            name: gatewayaccess-logs
          - emptyDir: {}
            name: gatewayauth-logs
          - emptyDir: {}
            name: gatewayroot-logs
    
    查看kibana,看是否收集到日志:
    
    
    

      

     

  • 相关阅读:
    用 Go 实现一个 LRU cache
    【转】入行软件测试,零基础拿OFFER
    【转】IntelliJ idea 高效使用教程,一劳永逸!
    python连接Oracle报错DPI1047
    【转】Pycharm快捷键设置(鼠标滚动控制字体大小)
    【转】Ubuntu:命令行安装可视化界面
    【转】Windows 如何在cmd命令行中查看、修改、删除与添加环境变量
    VAR多变量预测
    windows进程管理
    git关闭filemode
  • 原文地址:https://www.cnblogs.com/lixinliang/p/12924414.html
Copyright © 2011-2022 走看看