由 Fleet 管理的高级 Elastic Agent 配置

编辑

对于由 Fleet 管理的基本 Elastic Agent 场景,请按照在 Kubernetes 上运行由 Fleet 管理的 Elastic Agent中的步骤操作。

在托管的 Elastic Agent 安装中,提供配置更多高级选项的能力(例如,在启动期间配置提供程序)可能很有用。有关更多详细信息,请参阅提供程序

以下步骤演示了上述场景

步骤 1:下载 Elastic Agent 清单
编辑

建议您按照安装 Fleet 管理的 Elastic Agent(已在您的策略中安装 Kubernetes 集成)中的步骤操作,并从 Kibana UI 下载 Elastic Agent 清单。

Elastic Agent with K8s Package manifest
说明
示例清单也可以在此处找到。
步骤 2:创建一个新的 ConfigMap
编辑

创建一个新的 ConfigMap。

apiVersion: v1
kind: ConfigMap
metadata:
  name: agent-node-datastreams
  namespace: kube-system
  labels:
    k8s-app: elastic-agent
data:
  agent.yml: |-
    providers.kubernetes_leaderelection.enabled: false
    fleet.enabled: true
    fleet.access_token: "<FLEET_ENROLLMENT_TOKEN>"
---
说明
  1. 在上述示例中,演示了禁用kubernetes_leaderelection提供程序的过程。对于其他场景,可以遵循相同的步骤。

配置 Kubernetes 元数据增强的 ConfigMap 示例。

apiVersion: v1
kind: ConfigMap
metadata:
  name: agent-node-datastreams
  namespace: kube-system
  labels:
    k8s-app: elastic-agent
data:
  agent.yml: |-
    providers.kubernetes:
      add_resource_metadata:
        deployment: true
        cronjob: true
    fleet.enabled: true
    fleet.access_token: "<FLEET_ENROLLMENT_TOKEN>"
---
  1. 查找有关注册令牌的更多信息。
步骤 3:配置 DaemonSet
编辑

在下载的清单中,更新 DaemonSet 资源。

更新入口点。

containers:
  - name: elastic-agent
    image: docker.elastic.co/elastic-agent/elastic-agent: <ImageVersion>
    args: ["-c", "/etc/elastic-agent/agent.yml", "-e"]
说明
<ImageVersion> 只是一个占位符,用于您将在清单中下载的 elastic-agent 镜像版本:例如 image: docker.elastic.co/elastic-agent/elastic-agent: 8.11.0 重要的是使用 args 详细信息更新您的清单。

添加额外的卷挂载。

volumeMounts:
  - name: datastreams
    mountPath: /etc/elastic-agent/agent.yml
    readOnly: true
    subPath: agent.yml

添加新的卷。

volumes:
  - name: datastreams
    configMap:
      defaultMode: 0640
      name: agent-node-datastreams
重要说明
编辑
  1. 默认情况下,由 Fleet 管理的 Elastic Agent 的清单具有hostNetwork:true。为了支持在同一节点上安装多个 Elastic Agent,您应该将hostNetwork设置为false。请参阅此相关示例,如Elastic Agent 清单以支持 Kube-State-Metrics 分片中所述。
  2. /usr/share/elastic-agent/state必须保留在elastic-agent-managed-kubernetes.yaml中挂载,否则上面提供的自定义 ConfigMap 将被覆盖。