go - 操作 Kubernetes 的 client-go PodList

标签 go kubernetes-go-client

我正在研究 Kubernetes client-go,无法理解操作 Pod 结构的正确方法...

我得到一个 PodList pods 像这样:

// creates the clientset
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
    glog.Fatal(err)
}
// Get Pods
pods, err := clientset.CoreV1().Pods("").List(meta_v1.ListOptions{})
if err != nil {
    fmt.Println(err)
    return
}

然后我可以获得每个 Pod 的一些值使用像这样的循环

for _, pod := range pods.Items {
    fmt.Println(pod.GetName(), pod.Namespace)
}

但仅来自 ObjectMeta 结构,它有一些 Getters (pod.GetName()),使用 .Value 也有效 (pod.Namespace)。我无法理解访问嵌套在 Spec PodSpec 中的数据的正确方法是什么和 Status PodStatus .

也许我缺少一些核心的 Golang 概念......任何人都可以启发我,指出我的方向或为我提供一个正确方法的通用示例吗?

最佳答案

我找到了解决方案,但我不会无耻地删除它,而是提供一个答案:

我想访问的 Spec 和 Status 结构可以使用 pod.Spec.NodeNamepod.Status.StartTime 之类的东西轻松访问...

如果有人可以提供更详尽的答案来补充这一点,请提供。

关于go - 操作 Kubernetes 的 client-go PodList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47023715/

相关文章:

go - 循环遍历字节数组的所有值

Go包依赖布局

go - 无法覆盖 Kubernetes Go 客户端中的 Kubernetes 配置

go - 使用 "/"字符修补 kubernetes 标签

api - 客户端去: parse kubernetes json files to k8s structures

go - 如何反序列化 Kubernetes YAML 文件

Go, Golang : array type inside struct, 缺少类型复合文字

go - 如何检查传递给函数的参数在 Go 中是否为 nil?

go - 错误: Invalid value "sasl_ssl" for configuration property "security.protocol")

go - 无法通过 kubectl logs 命令检索 go 客户端中的 POD 日志