簡體   English   中英

在 go 程序中檢查 pod 是否在 k8s 集群上運行

[英]Check if a pod is running on a k8s cluster in a go program

我正在用 Go 編寫一個命令行工具,它將根據特定命名空間中k8s集群上特定 pod 的存在執行操作。

我可以在我的go程序中通過命令行(shell)調用來做類似的事情

kubectl get pods -n mynapespace l app=myapp

或者如果我不確定標簽,那么一些更不優雅的東西是:

kubectl get pods -n mynapespace | grep -i somepatternIamcertainabout

但是,考慮到我使用的是 k8s 本機語言 (Go),我想知道是否有更多的 Go 本機/特定方法來對 k8s api 服務器進行此類查詢,而無需從我的 cli 工具中求助於 shell 調用。

kubectl 實用程序只是一個方便的包裝器,它使用標准 HTTP 與 Kubernetes API 通信。 Go 標准庫有一個很棒的http 包 非常適合您要完成的任務。

事實上,您可以直接使用 Kubernetes 項目本身的這個官方客戶端包

但是,考慮到我使用的是 k8s 本機語言 (Go),我想知道是否有更多的 Go 本機/特定方法來對 k8s api 服務器進行此類查詢,而無需從我的 cli 工具中求助於 shell 調用。

如果你想在用go編寫的程序中與k8s 集群對話而不求助於 shell 調用, client-go庫是你的不二之選。 它包含您在 go 程序中查詢 k8s api 服務器所需的一切。

包括什么

  • kubernetes包包含訪問 Kubernetes API 的客戶端集。
  • discovery包用於發現 Kubernetes API 服務器支持的 API。
  • dynamic包包含一個動態客戶端,可以對任意 Kubernetes API 對象執行通用操作。
  • plugin/pkg/client/auth包包含可選的身份驗證插件,用於從外部來源獲取憑證。
  • transport包用於設置身份驗證和啟動連接。
  • tools/cache包對於編寫控制器很有用。

暫無
暫無

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

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