【发布时间】:2022-12-11 03:54:25
【问题描述】:
我正在尝试仅运行 Elastic 代理作为 Kubernetes 集群中的部署。我这样做的原因可能是 Elastic 代理的非典型用法:我只想部署 HTTP 日志端点集成并让其他 pod 将日志发送到这个 Elastic 代理。我是不是使用它来收集集群指标(因此他们提供的 manifest 与我无关)。
我正在使用图像docker.elastic.co/beats/elastic-agent:8.4.2。显然,此图像需要将文件和目录写入/usr/share/elastic-agent/,这最初会导致与failed: mkdir /usr/share/elastic-agent/state: read-only file system类似的错误。因此,我创建了一个emptyDir 卷并将其安装在/usr/share/elastic-agent。现在,该错误消失了,但被一个新错误所取代:
/usr/local/bin/docker-entrypoint: line 14: exec: elastic-agent: not found
图像的入口点是
ENTRYPOINT ["/usr/bin/tini" "--" "/usr/local/bin/docker-entrypoint"]
显然找不到/usr/local/bin/docker-entrypoint。
几个问题:
- 为什么找不到
elastic-agent可执行文件?肯定是在那条路上。 - 更广泛地说:我是 Elasticsearch 的新手——这只是为了设置一个 QA 环境,旨在测试我们将数据从我们的某些服务转发到客户的 Elastic Cloud 部署的产品功能。我认为将代理作为服务部署在运行这些服务的同一集群中是最不痛苦的方法。这不是实现我在第一段中描述的内容的好方法吗?
- 假设我可以让部署实际工作,这是下一步的方式吗?
- 在代理策略上创建“自定义 HTTP 端点日志”集成,侦听给定端口和所有接口。
- 将该端口映射到 pod 的外部端口。
- 将数据发送到该外部端口的 pod。
【问题讨论】:
-
该错误可能来自尝试为操作系统或体系结构运行二进制文件,它不是为 x86-64 系统上的 ARM 二进制文件设计的。
-
@jordanm 好点。我使用的图像说它适用于 arm64/amd64 (docker.elastic.co/r/beats/elastic-agent) 但为了确定,我将标签更改为 amd64(集群节点共享的架构),我看到了同样的错误。
-
您的问题是否已解决?如果是,您能否将您遵循的程序作为解决方案发布并接受它
-
@SaiChandiniRouthu 请参阅下面的答案。