温馨提示×

centos k8s部署的日志管理技巧

小樊
46
2025-03-01 18:32:37
栏目: 智能运维
Centos服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在CentOS上部署Kubernetes(k8s)时,日志管理是一个关键的运维任务。有效的日志管理可以帮助你监控服务的运行状况,排查故障,优化性能,甚至发现安全问题。以下是一些常用的日志管理技巧和工具:

1. 使用EFK堆栈(Elasticsearch, Fluentd, Kibana)

EFK堆栈是Kubernetes环境中常用的日志管理解决方案。

  • Elasticsearch:用于存储和索引日志数据。
  • Fluentd:用于收集应用的日志数据并将其发送到Elasticsearch中。
  • Kibana:用于日志数据的可视化和分析。

部署步骤

  1. 部署Fluentd

    创建Fluentd的DaemonSet配置文件fluentd-ds.yaml

    apiVersion: apps/v1
    kind: DaemonSet
    metadata:
      name: fluentd
      namespace: kube-system
    spec:
      selector:
        matchLabels:
          app: fluentd
      template:
        metadata:
          labels:
            app: fluentd
        spec:
          containers:
          - name: fluentd
            image: fluent/fluentd-kubernetes-daemonset:v1-debian-elasticsearch
            env:
            - name: FLUENT_ELASTICSEARCH_HOST
              value: "elasticsearch.logging.svc.cluster.local"
            - name: FLUENT_ELASTICSEARCH_PORT
              value: "9200"
    

    应用配置文件:

    kubectl apply -f fluentd-ds.yaml
    
  2. 部署Elasticsearch

    创建Elasticsearch的服务配置文件elasticsearch-svc.yaml

    apiVersion: v1
    kind: Service
    metadata:
      name: elasticsearch
      namespace: logging
    spec:
      ports:
      - port: 9200
        clusterIP: None
      selector:
        app: elasticsearch
    

    创建Elasticsearch的部署配置文件elasticsearch-deployment.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: elasticsearch
      namespace: logging
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: elasticsearch
      template:
        metadata:
          labels:
            app: elasticsearch
        spec:
          containers:
          - name: elasticsearch
            image: docker.elastic.co/elasticsearch/elasticsearch:7.12.1
            ports:
            - containerPort: 9200
            - containerPort: 9300
    

    应用配置文件:

    kubectl apply -f elasticsearch-svc.yaml
    kubectl apply -f elasticsearch-deployment.yaml
    
  3. 部署Kibana

    创建Kibana的服务配置文件kibana-svc.yaml

    apiVersion: v1
    kind: Service
    metadata:
      name: kibana
      namespace: logging
    spec:
      type: NodePort
      ports:
      - port: 5601
        targetPort: 5601
        nodePort: 31000
      selector:
        app: kibana
    

    创建Kibana的部署配置文件kibana-deployment.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: kibana
      namespace: logging
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: kibana
      template:
        metadata:
          labels:
            app: kibana
        spec:
          containers:
          - name: kibana
            image: docker.elastic.co/kibana/kibana:7.12.1
            ports:
            - containerPort: 5601
            env:
            - name: ELASTICSEARCH_HOSTS
              value: "http://elasticsearch.logging.svc.cluster.local:9200"
    

    应用配置文件:

    kubectl apply -f kibana-svc.yaml
    kubectl apply -f kibana-deployment.yaml
    

2. 使用Kubetail和Stern

  • Kubetail:一个简单的Shell脚本,可以将多个Pod中的日志信息聚合到一起进行展示,并支持彩色输出和条件过滤。

    安装和使用

    brew tap johanhaleby/kubetail && brew install kubetail
    kubetail app1 app2 -c container1
    
  • Stern:使用Go语言开发的一款开箱即用的多容器实时日志查看工具。

3. 日志轮转

使用logrotate进行日志轮转,管理日志文件的大小和存储。

配置文件示例

/etc/logrotate.d/nginx:
/var/log/nginx/*.log {
   daily
   missingok
   rotate 7
   compress
   delaycompress
   notifempty
   create 0640 nginx nginx
   sharedscripts
   postrotate
     if [ -f /var/run/nginx.pid ]; then
       kill -USR1 `cat /var/run/nginx.pid`
     fi
   endscript
}

4. 使用Loki

Loki是Grafana Labs开发的日志聚合系统,专为日志数据设计,具有高性能和易于使用的特点。

安装和使用

kubectl apply -f https://raw.githubusercontent.com/grafana/loki/v2.0.0/production/ksonnet/loki-stack.yaml

通过以上工具和技巧,你可以在CentOS上部署和管理Kubernetes集群的日志,确保日志数据的可用性和可分析性。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:centos k8s部署中日志管理技巧

0