用于特定 pod 日志的 Kubernetes go 客户端 api

标签 kubernetes

我正在使用 kube go 客户端和 kube api 来访问 kube 数据。我目前没有找到任何针对特定 pod 日志的 api 调用。

kubectl logs pod-name

返回特定 Pod 的日志。我如何使用 go 客户端执行此操作? 我使用的是 kubernetes v1.0.6。

我可以通过使用获取 Pod

client.Pods("namespace").Get("pod-name")

最佳答案

Client Go为此提供了一个函数GetLogs,该函数已在 How to get logs from kubernetes using Go? 中得到解答。

<小时/>

了解 kubectl 如何实现其命令对于了解如何使用客户端库很有帮助。在这种情况下,kubectl's implementation of the logs command看起来像这样:

    req := client.RESTClient.Get().
        Namespace(namespace).
        Name(podID).
        Resource("pods").
        SubResource("log").
        Param("follow", strconv.FormatBool(logOptions.Follow)).
        Param("container", logOptions.Container).
        Param("previous", strconv.FormatBool(logOptions.Previous)).
        Param("timestamps", strconv.FormatBool(logOptions.Timestamps))

    if logOptions.SinceSeconds != nil {
        req.Param("sinceSeconds", strconv.FormatInt(*logOptions.SinceSeconds, 10))
    }
    if logOptions.SinceTime != nil {
        req.Param("sinceTime", logOptions.SinceTime.Format(time.RFC3339))
    }
    if logOptions.LimitBytes != nil {
        req.Param("limitBytes", strconv.FormatInt(*logOptions.LimitBytes, 10))
    }
    if logOptions.TailLines != nil {
        req.Param("tailLines", strconv.FormatInt(*logOptions.TailLines, 10))
    }
    readCloser, err := req.Stream()
    if err != nil {
        return err
    }

    defer readCloser.Close()
    _, err = io.Copy(out, readCloser)
    return err

关于用于特定 pod 日志的 Kubernetes go 客户端 api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52060944/

相关文章:

docker - 配置 prometheus 以从 dockerized nodejs pod 收集自定义指标

docker - Kubernetes:代码变化没有出现,有同步的方法吗?

kubernetes - Helm似乎根据我是否使用--dry-run --debug来解析我的图表不同。

image - Kubernetes 如何从外部存储库拉取镜像?图像存储在哪里?

amazon-web-services - 使用Jenkins管道无法识别aws eks命令

rest - Stackdriver-如何使用REST API获取在Google Cloud上运行的kubernetes pod的日志?

kubernetes - kubectl端口转发超时问题

python - 通过 Python 替换 Kubernetes 中的作业

kubernetes - 使用 --set 进行 helm install 以错误 "v1.ObjectMeta.Annotations: ReadString: expects "或 n 结束,但发现 t,在 #10 字节中发现错误”

ssl - 无法让 kubernetes 将我的 tls 证书传递给浏览器