Contoh Perintah Kubernetes Exec Menggunakan Go Client
Masalah:
Melaksanakan arahan dalam pod menggunakan klien Kubernetes Go boleh mencabar. Pengguna mungkin menghadapi ralat tanpa mesej yang jelas apabila cuba menstrim output pelaksanaan.
Penyelesaian:
Untuk melaksanakan perintah dengan betul dalam pod dengan klien Kubernetes Go, ikuti ini langkah:
Nota:
Contoh kod yang disediakan dalam soalan menggunakan versi PodExecOptions yang salah struct. Versi yang betul adalah daripada pakej v1 (bukan pakej tidak versi).
Contoh Berfungsi:
Kod berikut menunjukkan contoh yang berfungsi untuk melaksanakan arahan dalam pod menggunakan pelanggan Kubernetes Go:
package k8s import ( "io" v1 "k8s.io/api/core/v1" "k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes/scheme" restclient "k8s.io/client-go/rest" "k8s.io/client-go/tools/remotecommand" ) // ExecCmd exec command on specific pod and wait the command's output. func ExecCmdExample(client kubernetes.Interface, config *restclient.Config, podName string, command string, stdin io.Reader, stdout io.Writer, stderr io.Writer) error { cmd := []string{ "sh", "-c", command, } req := client.CoreV1().RESTClient().Post().Resource("pods").Name(podName). Namespace("default").SubResource("exec") option := &v1.PodExecOptions{ Command: cmd, Stdin: true, Stdout: true, Stderr: true, TTY: true, } if stdin == nil { option.Stdin = false } req.VersionedParams( option, scheme.ParameterCodec, ) exec, err := remotecommand.NewSPDYExecutor(config, "POST", req.URL()) if err != nil { return err } err = exec.Stream(remotecommand.StreamOptions{ Stdin: stdin, Stdout: stdout, Stderr: stderr, }) if err != nil { return err } return nil }
Kod ini menggunakan versi v1 PodExecOptions dengan betul dan menetapkan Parameter TTY kepada benar, mendayakan pelaksanaan perintah interaktif jika dikehendaki.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Perintah Exec Kubernetes Menggunakan Klien Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!