我有一个mssql pod,我需要使用sql_exporter来导出它的度量。我能够手动设置整件事很好:
- 下载二进制文件
- 安装程序包
- 跑步/pod上的sql_exporter开始在端口上侦听度量
我尝试使用kubectl exec -it ...
自动执行此操作,并能够执行步骤1和2。当我尝试用kubectl exec -it "$mssql_pod_name" -- bash -c ./sql_exporter
执行步骤3时,脚本会挂起,我知道服务器将永远监听,但这会停止我的其余安装脚本。
I0722 21:26:54.299112 435 main.go:52] Starting SQL exporter (version=0.5, branch=master, revision=fc5ed07ee38c5b90bab285392c43edfe32d271c5) (go=go1.11.3, user=root@f24ba5099571, date=20190114-09:24:06)
I0722 21:26:54.299534 435 config.go:18] Loading configuration from sql_exporter.yml
I0722 21:26:54.300102 435 config.go:131] Loaded collector "mssql_standard" from mssql_standard.collector.yml
I0722 21:26:54.300207 435 main.go:67] Listening on :9399
<nothing else, never ends>
任何关于让它静音并在后台运行的提示(我不能ctrl-c,因为这会停止端口侦听(。或者有更好的方法在pod部署时自动安装插件吗?谢谢
要回答您的问题:
这个答案应该对你有帮助。您应该(!?(能够使用./sql_exporter &
在后台运行进程(当而不是使用--stdin --tty
时(。如果这不起作用,您可以尝试相同答案所描述的nohup
。
要推荐更好的方法:
使用kubectl exec
不是对Kubernetes集群进行编程的好方法。
kubectl exec
最好用于调试,而不是将解决方案部署到集群中。
我认为有人已经为Microsoft SQL Server创建了Kubernetes部署(或类似的部署(。您现在想要用导出器来补充该部署。
您可以选择:
- 扩展现有部署,并将
sql_exporter
作为sidecar(另一个容器(添加到包括Microsoft SQL Server容器的Pod中。导出程序通过localhost
访问SQL Server。这是部署补充应用程序的功能(例如日志记录、监控(时的常见模式 - 为
sql_exporter
创建一个新的部署(或类似的部署(,并将其作为独立服务运行。将其配置为刮取一个|多个Microsoft SQL Server实例
这两种方法:
- 需要更多的工作,但他们是"更多的Kubernetes";解决方案,并提供更好的可重复性|可审核性等
- 要求您为
sql_exporter
创建一个容器(尽管我认为出口商的作者已经提供了(