我想从容器到主机节点进行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/