我已经开始使用minikube(使用Kubernetes 1.18.3)来测试ECK,尤其是packetbeat。 minikube配置文件称为“packetbeat”(重要,因为这也是Virtualbox VM的主机名),我按照ECK快速入门进行安装和运行。 ElasticSearch(单节点)和Kibana运行良好,packetbeat也正在收集流,但是,我无法使其将Kubernetes元数据添加到字段中。
我正在使用默认 namespace ,并创建了ClusterRoleBinding来查看 namespace 中的默认ServiceAccount。这很好,如果我不这样做,packetbeat将报告它无法在API服务器上列出Pod。
这是我用来使ECK部署packetbeat的Beat配置:
apiVersion: beat.k8s.elastic.co/v1beta1
kind: Beat
metadata:
name: packetbeat
spec:
type: packetbeat
version: 7.9.0
elasticsearchRef:
name: quickstart
kibanaRef:
name: kibana
config:
packetbeat.interfaces.device: any
packetbeat.protocols:
- type: http
ports: [80, 8000, 8080, 9200]
- type: tls
ports: [443]
packetbeat.flows:
timeout: 30s
period: 10s
processors:
- add_kubernetes_metadata: {}
daemonSet:
podTemplate:
spec:
terminationGracePeriodSeconds: 30
hostNetwork: true
automountServiceAccountToken: true # some older Beat versions are depending on this settings presence in k8s context
dnsPolicy: ClusterFirstWithHostNet
containers:
- name: packetbeat
securityContext:
runAsUser: 0
capabilities:
add:
- NET_ADMIN
(这大部分是从ECK示例页面进行的稍微修改的示例。)但是,这根本不起作用。我首先使用“add_kubernetes_metadata:{}”进行了尝试,但这将导致以下消息错误:当我添加“主机:packetbeat”时,此消息消失。我现在不再出现错误,但是我也没有得到Kubernetes元数据。我最感兴趣的是 namespace 标签,但我什么都没有。我没有在日志中看到任何其他错误,并且此刻仅每30秒报告一次监视详细信息。
我究竟做错了什么?我可以提供更多信息来帮助我进行调试吗?
最佳答案
因此,文档尚不清楚。尽管他们没有明确声明,但是您确实需要添加索引器和匹配器。我的理解是,有一些“默认”的(可以禁用它们),但是事实并非如此。根据文档中的示例添加索引器和匹配器,使Kubernetes元数据成为数据的一部分。
关于elasticsearch - Packetbeat不添加Kubernetes元数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63499811/