簡體   English   中英

如何在永不結束的腳本上運行 kubectl exec

[英]How to run kubectl exec on scripts that never end

我有一個 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. 擴充現有的 Deployment,並將sql_exporter作為 Sidecar(另一個容器)添加到包含 Microsoft SQL Server 容器的 Pod 中。 導出器通過localhost訪問 SQL Server。 這是部署補充應用程序的功能(例如日志記錄、監控)時的常見模式
  2. sql_exporter創建一個新的 Deployment(或類似的)並將其作為獨立服務運行。 配置它抓取一個|更多的 Microsoft SQL Server 實例。

這兩種方法:

  • 做更多的工作,但它們是“更多的 Kubernetes”解決方案,並提供更好的可重復性|可審計性等。
  • 要求您sql_exporter創建一個容器 (盡管我假設導出器的作者已經提供了這個)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM