我在 Google-Container-Engine 中运行我系统的新模块。我想将 stdout 和 stderr 从它们(在 pod 中运行)带到我的集中式 logstash。有没有一种简单的方法可以将日志从 pod 转发到外部日志服务,例如 logstash 或 elasticsearch?
最佳答案
我决定直接登录到elasticsearch,一个可以在elasticsearch.c.my-project.internal
访问的外部虚拟机(我在谷歌云平台上)。这很容易:
apiVersion: v1
kind: Service
metadata:
name: elasticsearch-logging
namespace: kube-system
labels:
k8s-app: elasticsearch
kubernetes.io/name: "elasticsearch"
spec:
type: ExternalName
externalName: elasticsearch.c.my-project.internal
ports:
- port: 9200
targetPort: 9200
elasticsearch-logging
的服务(基于 fluentd-elasticsearch deployment defintion :apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: fluentd-elasticsearch
namespace: kube-system
labels:
tier: monitoring
app: fluentd-logging
k8s-app: fluentd-logging
spec:
template:
metadata:
labels:
name: fluentd-elasticsearch
spec:
containers:
- name: fluentd-elasticsearch
image: gcr.io/google_containers/fluentd-elasticsearch:1.19
volumeMounts:
- name: varlog
mountPath: /var/log
- name: varlibdockercontainers
mountPath: /var/lib/docker/containers
readOnly: true
terminationGracePeriodSeconds: 30
volumes:
- name: varlog
hostPath:
path: /var/log
- name: varlibdockercontainers
hostPath:
path: /var/lib/docker/containers
使用
kubectl logs fluentd-elasticsearch-...
检查您是否能够连接到 elasticsearach 实例。关于kubernetes - 如何将日志从运行在 GCP 之上的 Kubernetes 上的 pod 发送到 elasticsearch/logstash?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39973548/