Sal*_*ada 6 variables statsd kubernetes prometheus
我正在尝试将 statsd 导出器 ( https://github.com/prometheus/statsd_exporter ) 软件部署为 K8s 集群中的 docker 容器。但是,我希望一些参数是可配置的。为了做到这一点,我通过 K8s 部署以 yaml 格式将一些参数传递给容器。当这些参数不包含双引号字符 (") 时,一切正常。但是,如果引入的变量的所需值包含双引号,K8s 会以错误的方式解释它们(类似的内容在Pass json string to environment 中有描述)Envoy 的 k8s 部署中的变量)。我想设置的是--statsd.listen-tcp=":<port>"
参数,我在 K8s 部署中使用command
和args
:
- name: statsd-exporter
image: prom/statsd-exporter:v0.12.2
...
command: ["/bin/statsd_exporter"]
args: ['--log.level="debug"', '--statsd.listen-tcp=":9999"']
Run Code Online (Sandbox Code Playgroud)
当我在 K8s 中部署它并检查“正在运行”部署的内容时,一切似乎都是正确的:
command:
- /bin/statsd_exporter
args:
- --log.level="debug"
- --statsd.listen-tcp=":9999"
Run Code Online (Sandbox Code Playgroud)
但是,容器永远不会启动,并出现以下错误:
time="..." level=fatal msg="Unable to resolve \": lookup \": no such host" source="main.go:64"
我认为 K8s 试图“转义”双引号,并将它们传递给容器,将反斜杠添加到容器中,因此后者无法理解它们。我也曾尝试写args
为
args: ["--log.level=\"debug\"", "--statsd.listen-tcp=\":9999\""]
Run Code Online (Sandbox Code Playgroud)
同样的事情也会发生。我也尝试将它们作为 env 变量传递,并且总是发生同样的问题:双引号没有以正确的方式解析。
关于一些可能的解决方案的任何想法?
谢谢!
根据源代码,statsd-exporter 使用kingpin进行命令行和标志解析器。如果我没记错的话,kingpin 并不要求值用双引号括起来。
我建议尝试:
- name: statsd-exporter
image: prom/statsd-exporter:v0.12.2
...
command: ["/bin/statsd_exporter"]
args:
- --log.level=debug
- --statsd.listen-tcp=:9999
Run Code Online (Sandbox Code Playgroud)
原因是,根据此处的源代码,输入值statsd.listen-tcp
被分为主机和端口,并且似乎每个错误消息的主机都获取双引号字符的值"
。
归档时间: |
|
查看次数: |
2612 次 |
最近记录: |