我正在尝试执行一个命令到一个正在运行的pod中。我正在使用go K8sclient来实现这个目标,但是遇到了一个问题。我也不知道解决方案是否正确。有人能检查一下并提供正确的解决方案吗?
这是我的准则。
namespace := getNamespace()
podName := "maxscale-0"
config, err := rest.InClusterConfig()
if err != nil {
log.Fatal(err)
}
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
log.Fatal(err)
}
req := clientset.CoreV1().Pods(namespace).Exec(podName, &corev1.PodExecOptions{
Command: []string{"sh", "-c", "grep -oP '\"name\": \"\\K[^\"]*' /var/lib/maxscale/MariaDB-Monitor_journal.json"},
})
// Set up a stream to capture the output
execStream, err := req.Stream()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
// Print the output
buf := new(bytes.Buffer)
buf.ReadFrom(execStream)
fmt.Println(buf.String())
我得到的错误是
clientset.CoreV1().Pods(namespace).Exec undefined (type "k8s.io/client-go/kubernetes/typed/core/v1".PodInterface has no field or method Exec)
1条答案
按热度按时间bvuwiixz1#
正如@大卫迷宫分享的,要在pod中使用k8的go客户端执行命令,请遵循以下代码:
有关详细信息,另请参阅此link