elasticsearch kubelet不创建指向/var/log/containers的符号链接,elasticsearch,kubernetes,kibana,fluentd,kubelet,elasticsearch,Kubernetes,Kibana,Fluentd,Kubelet" /> elasticsearch kubelet不创建指向/var/log/containers的符号链接,elasticsearch,kubernetes,kibana,fluentd,kubelet,elasticsearch,Kubernetes,Kibana,Fluentd,Kubelet" />

elasticsearch kubelet不创建指向/var/log/containers的符号链接

elasticsearch kubelet不创建指向/var/log/containers的符号链接,elasticsearch,kubernetes,kibana,fluentd,kubelet,elasticsearch,Kubernetes,Kibana,Fluentd,Kubelet,我正在尝试使用在我的k8s群集上设置EFK堆栈 当我尝试浏览kibana仪表板时,它会显示下一个输出: 在做了一些研究之后,我发现Fluentd没有检测到任何日志。 我在仆从上运行K8S1.2.4,在主人上运行1.2.0。 我成功地了解到,kubelet创建了/var/log/containers目录,并将集群中运行的所有容器的符号链接到其中。在此之后,Fluentd从minion装载share/var/log卷,并最终访问所有日志容器。因此,它可以将这些日志发送到弹性搜索 在我的例子中,我创

我正在尝试使用在我的k8s群集上设置EFK堆栈

当我尝试浏览kibana仪表板时,它会显示下一个输出:

在做了一些研究之后,我发现Fluentd没有检测到任何日志。 我在仆从上运行K8S1.2.4,在主人上运行1.2.0。 我成功地了解到,kubelet创建了/var/log/containers目录,并将集群中运行的所有容器的符号链接到其中。在此之后,Fluentd从minion装载share/var/log卷,并最终访问所有日志容器。因此,它可以将这些日志发送到弹性搜索

在我的例子中,我创建了/var/log/containers,但它是空的,即使/var/lib/docker/containers也不包含任何日志文件。 我曾经使用以下控制器和服务进行EFK堆栈设置:

es-controller.yaml apiVersion:v1 种类:复制控制器 元数据: 名称:elasticsearch-logging-v1 名称空间:kube系统 标签: k8s应用程序:elasticsearch日志 版本:v1 kubernetes.io/cluster-service:“true” 规格: 副本:2份 选择器: k8s应用程序:elasticsearch日志 版本:v1 模板: 元数据: 标签: k8s应用程序:elasticsearch日志 版本:v1 kubernetes.io/cluster-service:“true” 规格: 容器: -图片:gcr.io/google_containers/elasticsearch:v2.4.1 名称:elasticsearch日志 资源: #初始化时需要更多cpu,因此burstable类 限制: cpu:1000m 请求: 中央处理器:100米 端口: -集装箱港口:9200 姓名:db 协议:TCP -集装箱港口:9300 名称:运输 协议:TCP 体积数量: -名称:es持久存储 装载路径:/data 环境: -名称:“名称空间” 价值来源: fieldRef: fieldPath:metadata.namespace 卷数: -名称:es持久存储 emptyDir:{}

es-service.yaml apiVersion:v1 种类:服务 元数据: 名称:elasticsearch日志 名称空间:kube系统 标签: k8s应用程序:elasticsearch日志 kubernetes.io/cluster-service:“true” kubernetes.io/name:“Elasticsearch” 规格: 端口: -港口:9200 协议:TCP 目标端口:db 选择器: k8s应用程序:elasticsearch日志记录

fluentd-es.yaml apiVersion:v1 种类:豆荚 元数据: 名称:fluentd-es-v1.20 名称空间:kube系统 标签: k8s应用程序:fluentd es 版本:v1.20 规格: 容器: -姓名:fluentd es 图片:gcr.io/google_containers/fluentd elasticsearch:1.20 命令: -“/bin/sh” -“-c” -“/usr/sbin/td-agent 2>&1>>/var/log/fluentd.log” 资源: 限制: 中央处理器:100米 体积数量: -姓名:varlog 装载路径:/var/log -名称:varlibdockercontainers 装载路径:/var/lib/docker/containers 只读:正确 终止时间:30秒 卷数: -姓名:varlog 主机路径: 路径:/var/log -名称:varlibdockercontainers 主机路径: 路径:/var/lib/docker/containers

kibana-controller.yaml
apiVersion:extensions/v1beta1
种类:部署
元数据:
名称:kibana logging
名称空间:kube系统
标签:
k8s应用程序:kibana日志
kubernetes.io/cluster-service:“true”
规格:
副本:1份
选择器:
火柴标签:
k8s应用程序:kibana日志
模板:
元数据:
标签:
k8s应用程序:kibana日志
规格:
容器:
-名称:kibana logging
图片:gcr.io/google_containers/kibana:v4.6.1
资源:
#keep request=将此容器保持在保证类中的限制
限制:
中央处理器:100米
请求:
中央处理器:100米
环境:
-名称:“ELASTICSEARCH_URL”
值:“http://elasticsearch-logging:9200"
端口:
-集装箱港口:5601
名称:用户界面
协议:TCP

kibana-service.yaml apiVersion:v1 种类:服务 元数据: 名称:kibana logging 名称空间:kube系统 标签: k8s应用程序:kibana日志 kubernetes.io/cluster-service:“true” kubernetes.io/name:“Kibana” 规格: 类型:节点端口 端口: -港口:5601 协议:TCP 目标端口:用户界面 选择器: k8s应用程序:kibana日志记录

更新: 我将fluentd-es.yaml更改如下:

apiVersion:v1 种类:豆荚 元数据: 名称:fluentd elasticsearch 名称空间:kube系统 标签: k8s应用程序:fluentd日志记录 规格: 容器: -名称:fluentd elasticsearch 图片:gcr.io/google_containers/fluentd elasticsearch:1.15 资源: 限制: 内存:200Mi 请求: 中央处理器:100米 内存:200Mi 体积数量: -姓名:varlog 装载路径:/var/log -名称:varlibdockercontainers 装载路径:/var/lib/docker/containers 只读:正确 终止时间:30秒 卷数: -姓名:varlog 主机路径: 路径:/var/log -名称:varlibdockercontainers 主机路径: 路径:/var/lib/docker/containers

但当我运行一个名为“命名网关”的pod时,我在fluentd日志中发现了下一个错误:
/var/log/containers/gateway-c3cuu_default_gateway-d5966a86e7cb1519329272a0b900182be81f555242227db2f524e6e23cd75ba04.log不可读。它被排除在外,将在下次检查。

最后我找到了导致问题的原因。 从CentOS 7 repo安装docker时,有一个选项(--log driver=journald),强制docker运行日志输出到journald。默认行为是将这些日志写入json.log文件。因此,我唯一要做的就是从/etc/sysconfig/docker中删除最后提到的选项。

printf“OPTIONS='--selinux-enabled--signature verification=false'”|sudo-tee-a/etc/sysconfig/docker
ov