在Kubernetes上搭建新版fluentd-elasticsearch_1.22日志收集工具

本文档详细介绍了如何在Kubernetes 1.2.0集群上安装和配置Fluentd,以便与Elasticsearch和Kibana集成实现日志收集。内容涉及镜像准备、启动fluentd、配置文件修改、daemonset配置及认证key值的准备。在安装过程中,由于官方文档的配置问题,需要手动修改配置以解决授权和访问问题。
摘要由CSDN通过智能技术生成

背景介绍

第一,对于企业来说,日志的重要性不言而喻,就不赘述了。

第二,日志收集分析展示平台的选择,这里给出几点选择ELK的理由。ELK是一套非常成熟的系统,她本身的构架非常适合Kubernetes集群,这里官网当中也是选用的 Elasticsearch作为Sample的,GitHub上下载的kubernetes二进制包中本身就有这个.yaml文件,所以使用ELK作为收集日志的理由相当充分。
对于任何基础设施或后端服务系统,日志都是极其重要的。对于受Google内部容器管理系统Borg启发而催生出的Kubernetes项目来说,自然少不了对Logging的支持。在“ Logging Overview “中,官方概要介绍了Kubernetes上的几个层次的Logging方案,并给出Cluster-level logging的参考架构:
这里写图片描述

Kubernetes还给出了参考实现:
– Logging Backend: Elastic Search stack(包括: Kibana )
– Logging-agent: fluentd
ElasticSearch stack实现的cluster level logging的一个优势在于其对Kubernetes集群中的Pod没有侵入性,Pod无需做任何配合性改动。同时EFK/ELK方案在业内也是相对成熟稳定的。
在本文中,我将为我们的Kubernetes 1.2.0集群安装Fluentd(前提 Elastic Search和kibana已经部署完成)。
一、Kubernetes 1.2.0部署脚本

Kubernetes 1.2.0集群是通过kube-up.sh搭建并初始化的。按照 K8s官方文档 有关elasticsearch logging的介绍,在kubernetes/cluster/ubuntu/config-default.sh中,有一系列配置项:

// kubernetes/cluster/ubuntu/config-default.sh
# Optional: Enable node logging.
ENABLE_NODE_LOGGING=false
LOGGING_DESTINATION=${
   LOGGING_DESTINATION:-elasticsearch}

# Optional: When set to true, Elasticsearch and Kibana will be setup as part of the cluster bring up.
ENABLE_CLUSTER_LOGGING=false
ELASTICSEARCH_LOGGING_REPLICAS=${
   ELASTICSEARCH_LOGGING_REPLICAS:-1}

但是修改完配置文件后,EFK并没有通过kube-up.sh运行并安装elastic logging了。所以需要手工进行安装了!

镜像准备

1.2.0源码中kubernetes/cluster/addons/fluentd-elasticsearch下的manifest已经比较old了,我们直接使用kubernetes最新源码中的 manifest文件 :

k8s.io/kubernetes/cluster/addons/fluentd-elasticsearch/es-controller.yaml 

分析这个yaml,我们需要这个个镜像:
gcr.io/google_containers/fluentd-elasticsearch:1.22

显然镜像都在墙外,我通过翻墙工具下载镜像并重新打tag,上传到我在hub.docker.com上的账号下。

# docker pull  gcr.io/google_containers/fluentd-elasticsearch:1.2.2
# docker tag gcr.io/google_containers/fluentd-elasticsearch:1.2.2 lidnyun/elasticsearch:1.2.2
# docker push lidnyun/elasticsearch:1.2.2

下面是我们在后续安装过程中真正要使用到的镜像:
lidnyun/fluentd-elasticsearch:1.22

启动fluentd

fluentd是以 DaemonSet 的形式跑在K8s集群上的,这样k8s可以保证每个k8s cluster node上都会启动一个fluentd(注意:将image改为上述镜像地址)。

# kubectl create -f fluentd-es-ds.yaml
  daemonset "fluentd-es-v1.22" created

查看daemonset中的Pod的启动情况kubectl get pods –namespace=kube-system,发现:

NAME                                   READY     STATUS              RESTARTS   AGE
fluentd-elasticsearch-5c2mk            0/1       ContainerCreating   0          10s
fluentd-elasticsearch-84iwz            0/1       CrashLoopBackOff    1          10s
fluentd-elasticsearch-l1rab            0/1       CrashLoopBackOff    1          10s

fluentd Pod启动失败,fluentd的日志可以通过两种方式查看,通过宿主主机/var/log/fluentd.log或者通过kubectl命令查看:

  1. 通过/var/log/fluentd.log
    查看fluentd日志,tail -fn100 /var/log/fluentd.log
2017-03-29 08:37:35 +0000 [warn]: process died within 1 second. exit.
2017-03-29 08:38:23 +0000 [info]: reading config file path="/etc/td-agent/td-agent.conf"
2017-03-29 08:38:23 +0000 [info]: starting fluentd-0.12.31
2017-03-29 08:38:23 +0000 [info]: gem 'fluent-mixin-config-placeholders' version '0.4.0'
2017-03-29 08:38:23 +0000 [info]: gem 'fluent-mixin-plaintextformatter' version '0.2.6'
2017-03-29 08:38:23 +0000 [info]: gem 'fluent-plugin-docker_metadata_filter' version '0.1.3'
2017-03-29 08:38:23 +0000 [info]: gem 'fluent-plugin-elasticsearch' version '1.5.0'
2017-03-29 08:38:23 +0000 [info]: gem 'fluent-plugin-kafka' version '0.4.1'
2017-03-29 08:38:23 +0000 [info]: gem 'fluent-plugin-kubernetes_metadata_filter' version '0.24.0'
2017-03-29 08:38:23 +0000 [info]: gem 'fluent-plugin-mongo' version '0.7.16'
2017-03-29 08:38:23 +0000 [info]: gem 'fluent-plugin-rewrite-tag-filter' version '1.5.5'
2017-
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值