Pelaksanaan Pod Kubernetes Menggunakan Klien Go
Anda mahu melaksanakan perintah di dalam pod menggunakan klien Kubernetes Go, tetapi pelaksanaan semasa anda ialah menghadapi ralat dalam exec.Stream(sopt) tanpa sebarang mesej ralat. Artikel ini akan membimbing anda melalui penyahpepijatan dan memberikan contoh yang betul untuk kes penggunaan anda.
Menyahpepijat Isu
Ralat semasa mungkin timbul disebabkan oleh parameter konfigurasi yang salah atau tidak sepadan versi. Sahkan perkara berikut:
Pelaksanaan Betul
Berikut ialah contoh yang diperbetulkan berdasarkan fungsi ExecCmdExample yang diubah suai:
package k8s import ( "io" v1 "k8s.io/api/core/v1" "k8s.io/client-go/kubernetes" _ "k8s.io/client-go/plugin/pkg/client/auth/gcp" // Auth plugin specific to GKE "k8s.io/client-go/rest" "k8s.io/client-go/tools/remotecommand" ) // ExecCmdExample executes a command on a specific pod and waits for the command's output. func ExecCmdExample(client kubernetes.Interface, podName string, command string, stdin io.Reader, stdout io.Writer, stderr io.Writer) error { // Use a larger reader buffer size to handle long outputs. buf := make([]byte, 10000) cmd := []string{ "sh", "-c", command, } options := &v1.PodExecOptions{ Command: cmd, Stdin: stdin != nil, Stdout: true, Stderr: true, TTY: false, } req := client.CoreV1().RESTClient().Post(). Resource("pods"). Name(podName). Namespace("default"). SubResource("exec"). VersionedParams( options, 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, }) // Read additional output if necessary. if _, err = exec.Read(buf); err != nil { return err } return nil }
Atas ialah kandungan terperinci Bagaimana untuk Nyahpepijat dan Melaksanakan Perintah dengan Betul dalam Kubernetes Pods Menggunakan Klien Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!