Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Melaksanakan Perintah Exec Kubernetes Menggunakan Klien Go?

Bagaimana untuk Melaksanakan Perintah Exec Kubernetes Menggunakan Klien Go?

Patricia Arquette
Lepaskan: 2024-12-06 05:39:14
asal
1038 orang telah melayarinya

How to Execute Kubernetes Exec Commands Using the Go Client?

Contoh Perintah Kubernetes Exec Menggunakan Go Client

Masalah:

Melaksanakan arahan dalam pod menggunakan klien Kubernetes Go boleh mencabar. Pengguna mungkin menghadapi ralat tanpa mesej yang jelas apabila cuba menstrim output pelaksanaan.

Penyelesaian:

Untuk melaksanakan perintah dengan betul dalam pod dengan klien Kubernetes Go, ikuti ini langkah:

  1. Buat konfigurasi klien Kubernetes menggunakan restclient.Config struct, menyatakan hos pelayan dan tetapkan Insecure kepada true untuk tujuan ujian.
  2. Mulakan klien menggunakan fungsi RESTClientFor dan nyatakan versi kumpulan API dan serializer yang dirundingkan.
  3. Bina permintaan dengan mencipta Pembina permintaan Post() untuk sumber pod. Tetapkan nama pod, ruang nama dan subsumber (exec) dalam pembina permintaan.
  4. Nyatakan PodExecOptions dan gunakan ParameterCodec untuk mengekod parameter.
  5. Gunakan fungsi NewExecutor untuk mencipta Executor untuk konfigurasi yang diberikan, kaedah HTTP dan URL.
  6. Mulakan strim pilihan pelaksanaan dan tentukan strim stdin, stdout dan stderr serta tetapan TTY.
  7. Panggil fungsi Strim untuk melaksanakan arahan.

Nota:

Contoh kod yang disediakan dalam soalan menggunakan versi PodExecOptions yang salah struct. Versi yang betul adalah daripada pakej v1 (bukan pakej tidak versi).

Contoh Berfungsi:

Kod berikut menunjukkan contoh yang berfungsi untuk melaksanakan arahan dalam pod menggunakan pelanggan 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
}
Salin selepas log masuk

Kod ini menggunakan versi v1 PodExecOptions dengan betul dan menetapkan Parameter TTY kepada benar, mendayakan pelaksanaan perintah interaktif jika dikehendaki.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Perintah Exec Kubernetes Menggunakan Klien Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan