Kubernetes Exec-Befehlsbeispiel mit Go-Client
Problem:
Befehle in einem Pod ausführen Die Verwendung des Kubernetes Go-Clients kann eine Herausforderung sein. Beim Versuch, die Ausführungsausgabe zu streamen, können Benutzer auf Fehler ohne eindeutige Meldungen stoßen.
Lösung:
Um Befehle in einem Pod mit dem Kubernetes Go-Client korrekt auszuführen, befolgen Sie diese Schritte:
Hinweis:
Das in der Frage bereitgestellte Codebeispiel verwendet eine falsche Version der PodExecOptions-Struktur. Die richtige Version stammt aus dem v1-Paket (nicht aus dem unversionierten Paket).
Arbeitsbeispiel:
Der folgende Code zeigt ein funktionierendes Beispiel für die Ausführung von Befehlen in einem Pod mit der Kubernetes Go-Client:
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 }
Dieser Code verwendet korrekt die v1-Version von PodExecOptions und setzt den TTY-Parameter auf wahr, aktiviert bei Bedarf die interaktive Befehlsausführung.
Das obige ist der detaillierte Inhalt vonWie führe ich Kubernetes Exec-Befehle mit dem Go-Client aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!