【问题标题】:how to get the names of pods in job in kubernetes through client-go api?如何通过client-go api获取kubernetes中工作的pod名称?
【发布时间】:2022-02-15 17:26:38
【问题描述】:

我通过 client-go api 在 kubernetes 中创建了一份工作。现在想获取job的log,在client-go中找不到job的log api。所以我想获取一个job中所有pod的名字,通过名字获取POD日志,然后获取job的日志。

那么,如何通过client-go获取kubernetes作业中的pod名称?

非常感谢。

【问题讨论】:

  • 我认为client-go 只是一个客户端,而不是一个 api。 k8s api 与语言无关。因此您可以先尝试检查 api 的 http 响应。
  • Here 是类似问题的答案。让我知道这是否对您有帮助
  • 我用 labelselector 得到了它。谢谢。
  • 你能发布一个你到底做了什么的答案吗?正如您可以阅读here,这是非常好的做法,将来对其他人会有所帮助
  • 好的,我稍后再做。

标签: kubernetes client-go


【解决方案1】:

我创建一个带有标签的 pod,然后通过 LabelSelector 获取它。 喜欢它:

config, err := clientcmd.BuildConfigFromFlags("", "~/.kube/config")
if err != nil {
    println("config build error")
}

client, err := kubernetes.NewForConfig(config)

pods, err := client.CoreV1().Pods("test").List(context.TODO(),
    v1.ListOptions{LabelSelector: "name=label_name"})

for _, v := range pods.Items {
    log := client.CoreV1().Pods("test").GetLogs(v.Name, &v12.PodLogOptions{})
}

【讨论】:

    猜你喜欢
    • 2018-11-27
    • 2020-11-22
    • 2019-05-20
    • 1970-01-01
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 2019-12-09
    相关资源
    最近更新 更多