Exemple de commande Kubernetes Exec utilisant le client Go
Problème :
Exécution de commandes dans un pod utiliser le client Kubernetes Go peut être difficile. Les utilisateurs peuvent rencontrer des erreurs sans messages clairs lorsqu'ils tentent de diffuser le résultat de l'exécution.
Solution :
Pour exécuter correctement les commandes dans un pod avec le client Kubernetes Go, suivez ces étapes :
Remarque :
L'exemple de code fourni dans la question utilise une version incorrecte de la structure PodExecOptions. La version correcte provient du package v1 (et non du package non versionné).
Exemple de travail :
Le code suivant montre un exemple fonctionnel d'exécution de commandes dans un pod à l'aide de le client 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 }
Ce code utilise correctement la version v1 de PodExecOptions et définit le paramètre TTY sur vrai, permettant l'exécution de commandes interactives si vous le souhaitez.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!