英文:
Is it possible to run 'kubectl get events' from golang code
问题
我想获取 Kubernetes 事件列表并将其存储,我该如何在 Golang 代码中运行 'kubectl get events' 命令?
我尝试了下面的代码,但是出现了 "exec: 'kubectl get events': 在 $PATH 中找不到可执行文件" 的错误提示。
package main
import (
"fmt"
"os/exec"
)
func main() {
out, err := exec.Command("kubectl", "get", "events").Output()
if err != nil {
fmt.Printf("%s", err)
}
fmt.Println("Command Successfully Executed")
output := string(out[:])
fmt.Println(output)
}
你可以尝试使用 exec.Command
函数,并将命令和参数作为参数传递给它。在这种情况下,你可以将 "kubectl" 作为命令,"get" 和 "events" 作为参数传递给 exec.Command
函数。然后,你可以使用 Output
方法来执行命令并获取输出结果。
英文:
I want to get the list of kubernetes events and store it, how can I run 'kubectl get events' from a golang code.
I tried the below but getting "exec: "kubectl get events": executable file not found in $PATHCommand Successfully Executed"
package main
import (
"fmt"
"os/exec"
// "runtime"
)
func main() {
out, err := exec.Command("kubectl get events").Output()
if err != nil {
fmt.Printf("%s", err)
}
fmt.Println("Command Successfully Executed")
output := string(out[:])
fmt.Println(output)
}
答案1
得分: 1
首先,我会听从@zerkms的建议,并使用go-client查询任何k8s
信息-这样做将更容易提取数据,而不是处理混乱的命令行输出解析/错误检查。
如果你必须exec
到外部程序,请确保正确使用exec.Command,将可执行文件及其各个参数作为可变参数列出:
out, err := exec.Command("kubectl", "get", "events").Output()
调用:
exec.Command("kubectl get events")
会失败,因为它尝试在你的路径中找到一个名为kubectl get events
的单个可执行文件,而不是预期的kubectl
命令。
英文:
Firstly, I would heed @zerkms 's advice and query any k8s
info with the go-client - doing so will make it much easier to extract data rather than dealing with messy command-line output parsing/error-checking.
If you must exec
to an external program, ensure you use exec.Command correctly, listing the executable and its individual arguments as variadic arguments:
out, err := exec.Command("kubectl", "get", "events").Output()
calling:
exec.Command("kubectl get events")
fails, as it tries to find a single executable file in your path called kubectl get events
instead of the intended kubectl
command.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论