在 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.16/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.16.0
  securityContext:
    runAsUser: 1000
    runAsGroup: 1000
    capabilities:
      add: [ NET_RAW ]