小编JJB*_*oom的帖子

使用 go 客户端在 k8s 的 pod 中执行 exec 的示例

我想使用 k8s go 客户端在 pod 中执行命令。但是,我找不到任何关于此的示例。所以我阅读了kubectl exec源代码,并编写了如下代码。并且err = exec.Stream(sopt)总是在没有任何消息的情况下出现错误。谁能告诉我如何调试这个问题,或者给我一个正确的例子。

config := &restclient.Config{
 Host: "http://192.168.8.175:8080",
Insecure: true,
}

config.ContentConfig.GroupVersion = &api.Unversioned
config.ContentConfig.NegotiatedSerializer = api.Codecs

restClient, err := restclient.RESTClientFor(config)
if err != nil {
  panic(err.Error())
}

req := restClient.Post().Resource("pods").Name("wordpress-mysql-213049546-29s7d").Namespace("default").SubResource("exec").Param("container", "mysql")
req.VersionedParams(&api.PodExecOptions{
Container: "mysql",
Command:   []string{"ls"},
Stdin:     true,
Stdout:    true,
}, api.ParameterCodec)

 exec, err := remotecommand.NewExecutor(config, "POST", req.URL())
 if err != nil {
   panic(err.Error())
}
sopt := remotecommand.StreamOptions{
SupportedProtocols: remotecommandserver.SupportedStreamingProtocols,
Stdin:              os.Stdin,
Stdout: os.Stdout,
Stderr: os.Stderr,
Tty:    false,
} …
Run Code Online (Sandbox Code Playgroud)

kubernetes

11
推荐指数
2
解决办法
9776
查看次数

标签 统计

kubernetes ×1