由 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。请参阅此相关的 示例,如 支持 Kube-State-Metrics 分片的 Elastic Agent 清单中所述。
  2. /usr/share/elastic-agent/state 必须仍然挂载在 elastic-agent-managed-kubernetes.yaml 中,否则上面提供的自定义 config map 将被覆盖。