使用Golang代码部署kubernetes Pod

时间:2018-11-01 12:20:25

标签: go kubernetes kubectl pod

是否可以使用 golang 代码而不是使用 kubectl 的命令行Linux部署 kubernetes Pod

2 个答案:

答案 0 :(得分:2)

是的。绝对可以。 Kubernetes用golang编写。它有正式的客户去。您可以使用此go客户端创建,删除,修补,列出,控制几乎所有Kubernetes资源。

这是官方的客户端存储库:kubernetes/client-go

我已经创建了一个示例存储库here,以展示如何使用client-go创建pod。

您必须执行以下操作才能使用此客户端创建广告连播。我们将创建一个简单的busybox pod。

  1. 使用您的kube-config文件创建configuration。通常,配置文件是$HOME/.kube/config文件。请参见示例here
  2. 使用此clientset创建一个configuration。参见示例here
  3. 现在,生成我们要部署的Pod定义。参见示例here
  4. 最后,使用clientset在kubernetes集群中创建pod。参见示例here

答案 1 :(得分:1)

您可以编写函数并将单元格图像yaml文件作为参数。

func cellDeploy(pathToFileName string) error {
    cmd := exec.Command("kubectl", "apply", "-f", pathToFileName)
    stdoutReader, _ := cmd.StdoutPipe()
    stdoutScanner := bufio.NewScanner(stdoutReader)
    go func() {
        for stdoutScanner.Scan() {
            fmt.Println(stdoutScanner.Text())
        }
    }()
    stderrReader, _ := cmd.StderrPipe()
    stderrScanner := bufio.NewScanner(stderrReader)
    go func() {
        for stderrScanner.Scan() {
            fmt.Println(stderrScanner.Text())
        }
    }()
    err := cmd.Start()
    if err != nil {
        fmt.Printf("Error : %v \n", err)
        os.Exit(1)
    }
    err = cmd.Wait()
    if err != nil {
        fmt.Printf("Error: %v \n", err)
        os.Exit(1)
    }

    return nil
}