为了账号安全,请及时绑定邮箱和手机立即绑定

kubectl get pod <pod> -n <namespace> -o yaml in

kubectl get pod <pod> -n <namespace> -o yaml in

Go
RISEBY 2023-01-03 09:53:42
现在我在命令的帮助下将 Pod 作为 Kubernetes 结构pods , err := clientset.CoreV1().Pods("namespace_String").List(context.TODO(), metav1.ListOptions{})现在我把它作为单独的 yaml 文件获取 我应该使用哪个命令for i , pod := range pods.Items{    if i==0{        t := reflect.TypeOF(&pod)        for j := 0; j<t.NumMethod(); j++{            m := t.Method(j)            fmt.Println(m.Name)}}}此函数将打印我应该使用的 pod 项目中的函数列表谢谢你的回答
查看完整描述

2 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

要使用 client-go 获取单个 pod:


pod, err := clientset.CoreV1().Pods("pod_namespace").Get(context.TODO(),"pod_name", metav1.GetOptions{})

if err!=nil {

  log.Fatalln(err)

}

// do something with pod


查看完整回答
反对 回复 2023-01-03
?
湖上湖

TA贡献2003条经验 获得超2个赞

这yaml只是 etcd 中 kubernetes 内部存储中 Pod 对象的表示。你client-go得到的是Pod类型的实例v1.Pod。所以你应该能够使用这个对象本身并得到你想要的任何东西,例如p.Labels()等等。但是如果出于某种原因,你坚持要获得一个 yaml,你可以通过以下方式做到这一点:


import (

  "sigs.k8s.io/yaml"

)


b, err := yaml.Marshal(pod)

if err != nil {

  // handle err

}

log.Printf("Yaml of the pod is: %q", string(b))


请注意,yaml这里的库不是来自client-go库。该yaml库的文档可以在以下位置找到:https ://pkg.go.dev/sigs.k8s.io/yaml#Marshal


如果yaml您想使用json,您可以简单地使用结构本身 提供的Marshal函数https://pkg.go.dev/k8s.io/apiserver/pkg/apis/example/v1#Pod.Marshalv1.Pod,就像任何其他函数一样去对象。


查看完整回答
反对 回复 2023-01-03
  • 2 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信