示例:使用 Helm 在 Kubernetes 上安装独立 Elastic Agent
编辑示例:使用 Helm 在 Kubernetes 上安装独立 Elastic Agent
编辑此功能处于技术预览阶段,可能会在将来的版本中更改或删除。Elastic 会努力解决任何问题,但技术预览中的功能不受正式 GA 功能的支持 SLA 的约束。
此示例演示了如何使用 Helm Chart 在 Kubernetes 系统上安装独立 Elastic Agent,收集 Kubernetes 指标并将其发送到 Elastic Cloud 中的 Elasticsearch 集群,然后在 Kibana 中查看这些指标的可视化。
有关 Elastic Agent Helm Chart 及其优势的概述,请参阅使用 Helm 在 Kubernetes 上安装 Elastic Agent。
本指南将引导您完成以下步骤
先决条件
编辑要开始,您需要
- 本地安装 Helm Kubernetes 包管理器。
- 版本 8.16 或更高版本的 Elastic Cloud 托管的 Elasticsearch 集群。
- 一个Elasticsearch API 密钥。
- 一个活动的 Kubernetes 集群。
- 本地克隆 elastic/elastic-agent GitHub 存储库。请确保使用
8.16
分支以确保 Elastic Agent 与 Helm Chart 完全兼容。
安装 Elastic Agent
编辑- 打开您的 Elastic Cloud 部署,然后从导航菜单中选择管理此部署。
- 在应用程序部分,复制 Elasticsearch 端点并记下端点值。
- 打开终端 shell 并更改到您本地克隆的
elastic-agent
存储库中的目录。 -
复制此命令。
helm install demo ./deploy/helm/elastic-agent \ --set kubernetes.enabled=true \ --set outputs.default.type=ESPlainAuthAPI \ --set outputs.default.url=<ES-endpoint>:443 \ --set outputs.default.api_key="API_KEY"
请注意,该命令具有以下属性
-
helm install
运行 Helm CLI 安装工具。 -
demo
为已安装的 Chart 指定一个名称。您可以选择任何名称。 -
./deploy/helm/elastic-agent
是要安装的 Helm Chart 的本地路径(将来计划为该 Chart 提供一个公共 URL)。 -
--set kubernetes.enabled=true
启用 Kubernetes 集成。CLI 参数覆盖 Elastic Agent values.yaml 文件中kubernetes.enabled
的默认值false
。 -
--set outputs.default.type=ESPlainAuthAPI
将 Elasticsearch 输出的身份验证方法设置为需要 API 密钥(同样,覆盖 Elastic Agent values.yaml 文件中默认设置的值)。 -
--set outputs.default.url=<ES-endpoint>:443
设置 Elastic Cloud 部署的地址,Elastic Agent 将通过端口 443 将其输出发送到该地址。 -
--set outputs.default.api_key="API_KEY"
设置 Elastic Agent 用于向 Elasticsearch 集群进行身份验证的 API 密钥。有关所有可用 YAML 设置和描述的完整列表,请参阅Elastic Agent Helm Chart 自述文件。
-
-
更新命令以替换
-
<ES-endpoint>
为您之前复制的 Elasticsearch 端点值。 -
<API_KEY>
为您的 API 密钥名称。更新后,命令应如下所示
helm install demo ./deploy/helm/elastic-agent \ --set kubernetes.enabled=true \ --set outputs.default.type=ESPlainAuthAPI \ --set outputs.default.url=https://demo.es.us-central1.gcp.foundit.no:443 \ --set outputs.default.api_key="A6ecaHNTJUFFcJI6esf4:5HJPxxxxxxxPS4KwSBeVEs"
-
-
运行该命令。
命令输出应确认已安装三个 Elastic Agent 以及 Kubernetes 集成
... Installed agents: - clusterWide [deployment - standalone mode] - ksmSharded [statefulset - standalone mode] - perNode [daemonset - standalone mode] Installed integrations: - kubernetes [built-in chart integration] ...
-
运行
kubectl get pods -n default
命令以确认 Elastic Agent Pod 正在运行NAME READY STATUS RESTARTS AGE agent-clusterwide-demo-77c65f6c7b-trdms 1/1 Running 0 5m18s agent-ksmsharded-demo-0 2/2 Running 0 5m18s agent-pernode-demo-c7d75 1/1 Running 0 5m18s
- 在您的 Elastic Cloud 部署中,从 Kibana 菜单打开集成页面。
- 搜索
Kubernetes
,然后选择 Kubernetes 集成卡片。 - 在 Kubernetes 集成页面上,选择安装 Kubernetes 资源。这将安装仪表板、Elasticsearch 索引以及用于监视 Kubernetes 集群的其他资源。
-
在 Kubernetes 集成页面上,打开资源选项卡并选择[Metrics Kubernetes] 节点仪表板。
在仪表板上,您可以查看 Kubernetes 节点的状态,包括内存、CPU 和文件系统使用情况、网络吞吐量等指标。
-
在 Kubernetes 集成页面上,打开资源选项卡并选择[Metrics Kubernetes] Pod仪表板。与节点仪表板一样,在此仪表板上,您可以查看 Kubernetes Pod 的状态,包括内存、CPU 和网络吞吐量等各种指标。
升级 Elastic Agent 配置
编辑现在您已成功安装 Elastic Agent 并收集和发送数据,让我们尝试更改 Agent 配置设置。
在之前的安装示例中,安装了三个 Elastic Agent 节点。其中一个节点 agent-ksmsharded-demo-0
用于启用 kube-state-metrics 服务。假设您不需要这些指标,并且希望相应地升级配置。
-
复制您之前用于安装 Elastic Agent 的命令
helm install demo ./deploy/helm/elastic-agent \ --set kubernetes.enabled=true \ --set outputs.default.type=ESPlainAuthAPI \ --set outputs.default.url=<ES-endpoint>:443 \ --set outputs.default.api_key="API_KEY"
-
按如下方式更新命令
- 将
install
更改为 upgrade。 -
添加参数
--set kubernetes.state.enabled=false
。这将覆盖 Elastic Agent values.yaml 文件中设置kubernetes.state
的默认值true
。helm upgrade demo ./deploy/helm/elastic-agent \ --set kubernetes.enabled=true \ --set kubernetes.state.enabled=false \ --set outputs.default.type=ESPlainAuthAPI \ --set outputs.default.url=<ES-endpoint>:443 \ --set outputs.default.api_key="API_KEY"
- 将
-
运行该命令。
命令输出应确认现在仅安装了两个 Elastic Agent 以及 Kubernetes 集成
... Installed agents: - clusterWide [deployment - standalone mode] - perNode [daemonset - standalone mode] Installed integrations: - kubernetes [built-in chart integration] ...
您已将配置升级为仅运行两个 Elastic Agent,而无需 kube-state-metrics 服务。您可以类似地升级 Agent 以更改 Elastic Agent values.yaml 文件中定义的其他设置。
更改 Elastic Agent 的运行模式
编辑默认情况下,Elastic Agent 在 elastic
用户帐户下运行。对于某些用例,您可能希望暂时更改 Agent 以使用更高的权限运行。
-
运行
kubectl get pods -n default
命令以查看正在运行的 Elastic Agent PodNAME READY STATUS RESTARTS AGE agent-clusterwide-demo-77c65f6c7b-trdms 1/1 Running 0 5m18s agent-pernode-demo-c7d75 1/1 Running 0 5m18s
-
现在,运行
kubectl exec
命令进入正在运行的 Elastic Agent 之一,替换上一个命令返回的正确 Pod 名称。例如kubectl exec -it pods/agent-pernode-demo-c7d75 -- bash
-
在 Pod 内部,运行 Linux
ps aux
命令以查看正在运行的进程。ps aux
结果应类似于以下内容
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND elastic+ 1 0.0 0.0 1936 416 ? Ss 21:04 0:00 /usr/bin/tini -- /usr/local/bin/docker-entrypoint -c /etc/elastic-agent/agent.yml -e elastic+ 10 0.2 1.3 2555252 132804 ? Sl 21:04 0:13 elastic-agent container -c /etc/elastic-agent/agent.yml -e elastic+ 37 0.6 2.0 2330112 208468 ? Sl 21:04 0:37 /usr/share/elastic-agent/data/elastic-agent-d99b09/components/agentbeat metricbeat -E elastic+ 38 0.2 1.7 2190072 177780 ? Sl 21:04 0:13 /usr/share/elastic-agent/data/elastic-agent-d99b09/components/agentbeat filebeat -E se elastic+ 56 0.1 1.7 2190136 175896 ? Sl 21:04 0:11 /usr/share/elastic-agent/data/elastic-agent-d99b09/components/agentbeat metricbeat -E elastic+ 68 0.1 1.8 2190392 184140 ? Sl 21:04 0:12 /usr/share/elastic-agent/data/elastic-agent-d99b09/components/agentbeat metricbeat -E elastic+ 78 0.7 2.0 2330496 204964 ? Sl 21:04 0:48 /usr/share/elastic-agent/data/elastic-agent-d99b09/components/agentbeat filebeat -E se elastic+ 535 0.0 0.0 3884 3012 pts/0 Ss 22:47 0:00 bash elastic+ 543 0.0 0.0 5480 2360 pts/0 R+ 22:47 0:00 ps aux
-
在命令输出中,请注意 Elastic Agent 当前正在作为
elastic
用户运行elastic+ 10 0.2 1.3 2555252 132804 ? Sl 21:04 0:13 elastic-agent container -c /etc/elastic-agent/agent.yml -e
- 运行
exit
退出 Elastic Agent Pod。 -
再次运行
helm upgrade
命令,这次添加参数--set agent.unprivileged=false
以覆盖该设置的默认值true
。helm upgrade demo ./deploy/helm/elastic-agent \ --set kubernetes.enabled=true \ --set kubernetes.state.enabled=false \ --set outputs.default.type=ESPlainAuthAPI \ --set outputs.default.url=<ES-endpoint>:443 \ --set outputs.default.api_key="API_KEY" \ --set agent.unprivileged=false
-
运行
kubectl get pods -n default
命令以查看正在运行的 Elastic Agent PodNAME READY STATUS RESTARTS AGE agent-clusterwide-demo-77c65f6c7b-trdms 1/1 Running 0 5m18s agent-pernode-demo-s6s7z 1/1 Running 0 5m18s
-
重新运行
kubectl exec
命令进入正在运行的 Elastic Agent 之一,替换正确的 Pod 名称。例如kubectl exec -it pods/agent-pernode-demo-s6s7z -- bash
-
在 Pod 内部,运行 Linux
ps aux
命令以查看正在运行的进程。USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 1936 452 ? Ss 23:10 0:00 /usr/bin/tini -- /usr/local/bin/docker-entrypoint -c /etc/elastic-agent/agent.yml -e root 9 0.9 1.3 2488368 135920 ? Sl 23:10 0:01 elastic-agent container -c /etc/elastic-agent/agent.yml -e root 27 0.9 1.9 2255804 203128 ? Sl 23:10 0:01 /usr/share/elastic-agent/data/elastic-agent-d99b09/components/agentbeat metricbeat -E root 44 0.3 1.8 2116148 187432 ? Sl 23:10 0:00 /usr/share/elastic-agent/data/elastic-agent-d99b09/components/agentbeat metricbeat -E root 64 0.3 1.8 2263868 188892 ? Sl 23:10 0:00 /usr/share/elastic-agent/data/elastic-agent-d99b09/components/agentbeat metricbeat -E root 76 0.4 1.8 2190136 190972 ? Sl 23:10 0:00 /usr/share/elastic-agent/data/elastic-agent-d99b09/components/agentbeat filebeat -E se root 100 1.2 2.0 2256316 207692 ? Sl 23:10 0:01 /usr/share/elastic-agent/data/elastic-agent-d99b09/components/agentbeat filebeat -E se root 142 0.0 0.0 3752 3068 pts/0 Ss 23:12 0:00 bash root 149 0.0 0.0 5480 2376 pts/0 R+ 23:13 0:00 ps aux
- 运行
exit
退出 Elastic Agent Pod。
您已将 Elastic Agent 权限升级为以 root
身份运行。要将设置更改回,您可以使用 --set agent.unprivileged=true
重新运行 helm upgrade
命令以返回到默认的 unprivileged
模式。
清理
编辑完成此示例后,运行 helm uninstall
命令以卸载 Elastic Agent。
helm uninstall demo
卸载应确认如下所示
release "demo" uninstalled
提醒一下,有关使用 Elastic Agent Helm Chart 的完整详细信息,请参阅Elastic Agent Helm Chart 自述文件。