在 Kubernetes 上运行 Heartbeat
编辑在 Kubernetes 上运行 Heartbeat
编辑Heartbeat 的 Docker 镜像 可用于在 Kubernetes 上检查资源运行时间。
在 Kubernetes 上运行 Elastic Cloud?请参阅 在 ECK 上运行 Beats
Kubernetes 部署清单
编辑单个 Heartbeat 可以检查整个集群的运行时间。
所有内容都部署在 kube-system
命名空间下,您可以通过更新 YAML 文件来更改它。
要获取清单,只需运行
curl -L -O https://raw.githubusercontent.com/elastic/beats/8.17/deploy/kubernetes/heartbeat-kubernetes.yaml
如果您使用的是 Kubernetes 1.7 或更早版本:Heartbeat 使用 hostPath 卷来持久化内部数据,它位于 /var/lib/heartbeat-data 下。清单使用文件夹自动创建(DirectoryOrCreate
),它是在 Kubernetes 1.8 中引入的。您需要从清单中删除 type: DirectoryOrCreate
并自己创建主机文件夹。
设置
编辑清单中公开了一些参数来配置日志目标,默认情况下,如果存在现有的 Elasticsearch 部署,它们将使用它,但您可能想要更改此行为,只需编辑 YAML 文件并修改它们
- name: ELASTICSEARCH_HOST value: elasticsearch - name: ELASTICSEARCH_PORT value: "9200" - name: ELASTICSEARCH_USERNAME value: elastic - name: ELASTICSEARCH_PASSWORD value: changeme
部署
编辑要将 Heartbeat 部署到 Kubernetes,只需运行
kubectl create -f heartbeat-kubernetes.yaml
然后您应该可以通过运行来检查状态
$ kubectl --namespace=kube-system get deployment/heartbeat NAME READY UP-TO-DATE AVAILABLE AGE heartbeat 1/1 1 1 1m
以非特权用户身份运行 Heartbeat
编辑在 Kubernetes 下,Heartbeat 可以作为非 root 用户运行,但需要一些特权网络功能才能正常运行。请确保容器可以使用 NET_RAW
功能。
containers: - name: heartbeat image: docker.elastic.co/beats/heartbeat:8.17.0 securityContext: runAsUser: 1000 runAsGroup: 1000 capabilities: add: [ NET_RAW ]