Go 클라이언트를 사용한 Kubernetes Pod 실행
Kubernetes Go 클라이언트를 사용하여 Pod 내에서 명령을 실행하고 싶지만 현재 구현은 다음과 같습니다. 오류 메시지 없이 exec.Stream(sopt)에서 오류가 발생했습니다. 이 문서에서는 디버깅을 안내하고 사용 사례에 대한 올바른 예를 제공합니다.
문제 디버깅
현재 오류는 잘못된 구성 매개변수 또는 불일치로 인해 발생할 수 있습니다. 버전. 다음 사항을 확인하세요.
올바른 구현
수정된 ExecCmdExample 함수를 기반으로 수정된 예는 다음과 같습니다.
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 }
위 내용은 Go 클라이언트를 사용하여 Kubernetes Pod에서 명령을 디버깅하고 올바르게 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!