首頁 > 後端開發 > Golang > 如何使用Go客戶端執行Kubernetes Exec指令?

如何使用Go客戶端執行Kubernetes Exec指令?

Patricia Arquette
發布: 2024-12-06 05:39:14
原創
1002 人瀏覽過

How to Execute Kubernetes Exec Commands Using the Go Client?

使用Go 客戶端的Kubernetes Exec 指令範例

問題:

問題:

解決方案:

    要使用Kubernetes Go 用戶端在pod 中正確執行指令,請依照下列步驟操作步驟:
  1. 使用restclient.Config結構建立Kubernetes客戶端配置,指定伺服器主機並將Insecure設定為true用於測試目的。
  2. 使用 RESTClientFor 函數初始化客戶端,並指定 API 群組版本和協商序列化器。
  3. 透過為 pod 資源建立 Post() 請求建構器來建構請求。在請求建構器中設定 pod 名稱、命名空間和子資源(exec)。
  4. 指定 PodExecOptions 並使用 ParameterCodec 對參數進行編碼。
  5. 使用 NewExecutor 函數建立 Executor給定的配置、HTTP 方法和 URL。
  6. 初始化流執行選項並指定stdin、stdout 和 stderr 流以及 TTY 設定。
呼叫 Stream 函數來執行指令。

注意:

問題中提供的程式碼範例使用了不正確版本的 PodExecOptions 結構。正確的版本來自 v1 套件(不是未版本化的套件)。

工作範例:

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
}
登入後複製
以下程式碼示範了在pod 中執行指令的工作範例: Kubernetes Go 客戶端:

此程式碼正確使用PodExecOptions 的v1 版本並設定TTY參數設定為true,如果需要,可以啟用互動式命令執行。

以上是如何使用Go客戶端執行Kubernetes Exec指令?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板