示例:使用 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
存储库的本地克隆中的目录。 -
llow复制此命令。
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 资产。这将安装用于监视 Kubernetes 集群的仪表板、Elasticsearch 索引和其他资产。
-
在 Kubernetes 集成页面上,打开 资产 选项卡,然后选择 [指标 Kubernetes] 节点 仪表板。
在仪表板上,您可以查看 Kubernetes 节点的状态,包括有关内存、CPU 和文件系统使用率、网络吞吐量等的指标。
-
在 Kubernetes 集成页面上,打开 资产 选项卡,然后选择 [指标 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
身份运行。要将设置改回,您可以重新运行 helm upgrade
命令,并使用 --set agent.unprivileged=true
返回到默认的 unprivileged
模式。
清理
编辑完成此示例后,运行 helm uninstall
命令以卸载 Elastic Agent。
helm uninstall demo
应确认卸载,如下所示
release "demo" uninstalled
提醒一下,有关使用 Elastic Agent Helm Chart 的完整详细信息,请参阅 Elastic Agent Helm Chart 自述文件。