docker - 有没有办法从容器到基础k8s节点进行syslog?

标签 docker kubernetes syslog fluentd

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

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

例如syslog从hello-server到节点(该节点托管所有这些 namespace )

我想从hello-server容器进行syslog输出,以流畅地在节点(@ 127.0.0.1:5140)上运行。

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”与基础主机连接

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

最佳答案

您实际上正在看的是Stackdriver Logging Agent。根据https://kubernetes.io/docs/tasks/debug-application-cluster/logging-stackdriver/#prerequisites上的文档:

If you’re using GKE and Stackdriver Logging is enabled in your cluster, you cannot change its configuration, because it’s managed and supported by GKE. However, you can disable the default integration and deploy your own.



然后,文档提供了使用自定义ConfigMap冲洗自己的流利的DaemonSet的示例。您需要运行自己的流利语言,以便可以为每个https://docs.fluentd.org/input/syslog配置系统日志输入。

然后,由于fluentd作为DaemonSet运行,因此您将配置Service,以将其公开给其他Pod,然后允许其连接。如果您从https://github.com/fluent/fluentd-kubernetes-daemonset运行官方的上游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://kubernetes.io/docs/concepts/services-networking/service/#dns上的使用DNS)。

关于docker - 有没有办法从容器到基础k8s节点进行syslog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56825945/

相关文章:

docker - 为什么我无法通过 ClusterIP 服务的名称访问该服务?

Kubernetes 无法上传大于 1MB 的文件

hadoop - Flume 内存 channel 消耗磁盘空间

kubernetes - 是否可以使用单个 GKE 入口 Controller 拥有多个入口资源

docker - skaffold 不会在 minikube 中重新加载 golang 代码

python - 读取 gzip 文件的头/尾而不将其读入内存

ubuntu - 如何配置 Jetty 8 以使用系统日志

docker ADD --chown 错误或功能?

docker - Docker:如何在一个命令中运行服务和终端?

docker - 在 ubuntu 14.04 上启动 docker 守护程序时出错(未安装设备 cgroup)