如何在永不结束的脚本上运行kubectl exec



我有一个mssql pod,我需要使用sql_exporter来导出它的度量。我能够手动设置整件事很好:

  1. 下载二进制文件
  2. 安装程序包
  3. 跑步/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部署(或类似的部署(。您现在想要用导出器来补充该部署。

您可以选择:

  1. 扩展现有部署,并将sql_exporter作为sidecar(另一个容器(添加到包括Microsoft SQL Server容器的Pod中。导出程序通过localhost访问SQL Server。这是部署补充应用程序的功能(例如日志记录、监控(时的常见模式
  2. sql_exporter创建一个新的部署(或类似的部署(,并将其作为独立服务运行。将其配置为刮取一个|多个Microsoft SQL Server实例

这两种方法:

  • 需要更多的工作,但他们是"更多的Kubernetes";解决方案,并提供更好的可重复性|可审核性等
  • 要求您为sql_exporter创建一个容器(尽管我认为出口商的作者已经提供了(

相关内容

  • 没有找到相关文章

最新更新