是否有办法从容器到基础k8s节点进行syslog?

时间:2019-06-30 15:14:16

标签: docker kubernetes syslog fluentd

我想从容器到主机节点进行syslog-

在节点-https://docs.fluentd.org/input/syslog上运行的定向流利(@ 127.0.0.1:5140)

例如从hello-server到节点(承载所有这些名称空间的节点)的syslog

我想将hello-server容器的syslog输出输出到在节点(@ 127.0.0.1:5140)上运行的fluentd。

kubectl get pods --all-namespaces
NAMESPACE     NAME                                             READY   STATUS    RESTARTS   AGE
default       hello-server-7d8589854c-r4xfr                    1/1     Running   0          21h
kube-system   event-exporter-v0.2.4-5f7d5d7dd4-lgzg5           2/2     Running   0          6d6h
kube-system   fluentd-gcp-scaler-7b895cbc89-bnb4z              1/1     Running   0          6d6h
kube-system   fluentd-gcp-v3.2.0-4qcbs                         2/2     Running   0          6d6h
kube-system   fluentd-gcp-v3.2.0-jxnbn                         2/2     Running   0          6d6h
kube-system   fluentd-gcp-v3.2.0-k58x6                         2/2     Running   0          6d6h
kube-system   heapster-v1.6.0-beta.1-7778b45899-t8rz9          3/3     Running   0          6d6h
kube-system   kube-dns-autoscaler-76fcd5f658-7hkgn             1/1     Running   0          6d6h
kube-system   kube-dns-b46cc9485-279ws                         4/4     Running   0          6d6h
kube-system   kube-dns-b46cc9485-fbrm2                         4/4     Running   0          6d6h
kube-system   kube-proxy-gke-test-default-pool-040c0485-7zzj   1/1     Running   0          6d6h
kube-system   kube-proxy-gke-test-default-pool-040c0485-ln02   1/1     Running   0          6d6h
kube-system   kube-proxy-gke-test-default-pool-040c0485-w6kq   1/1     Running   0          6d6h
kube-system   l7-default-backend-6f8697844f-bxn4z              1/1     Running   0          6d6h
kube-system   metrics-server-v0.3.1-5b4d6d8d98-k7tz9           2/2     Running   0          6d6h
kube-system   prometheus-to-sd-2g7jc                           1/1     Running   0          6d6h
kube-system   prometheus-to-sd-dck2n                           1/1     Running   0          6d6h
kube-system   prometheus-to-sd-hsc69                           1/1     Running   0          6d6h

由于某些原因,k8s不允许我们使用内置的syslog驱动程序docker run --log-driver syslog

此外,k8s不允许我使用--network =“ host”

与基础主机连接

有人尝试过类似的方法吗?也许远程系统日志比尝试使用在每个节点上运行的基础系统日志要容易得多?

1 个答案:

答案 0 :(得分:2)

您实际上正在查看的是Stackdriver Logging Agent。根据{{​​3}}上的文档:

  

如果您使用的是GKE,并且集群中启用了Stackdriver Logging,则无法更改其配置,因为它是由GKE管理和支持的。但是,您可以禁用默认集成并部署自己的集成。

然后,文档提供了使用自定义ConfigMap冲洗自己的流利的DaemonSet的示例。您需要运行自己的流利语言,以便可以根据https://kubernetes.io/docs/tasks/debug-application-cluster/logging-stackdriver/#prerequisites配置系统日志输入。

然后,由于fluentd以DaemonSet的身份运行,因此您将配置Service,以将其公开给其他Pod,然后允许其连接。如果您从https://docs.fluentd.org/input/syslog运行官方的上游DaemonSet,则服务可能类似于:

apiVersion: v1
kind: Service
namespace: kube-system
metadata:
  name: fluentd
spec:
  selector:
    k8s-app: fluentd-logging
  ports:
  - protocol: UDP
    port: 5140
    targetPort: 5140

然后您的应用程序可以登录到fluentd.kube-system:5140(请参阅在https://github.com/fluent/fluentd-kubernetes-daemonset上使用DNS)。