繁体   English   中英

kubectl 获取 pod <pod> -n <namespace> -o kubernetes 客户端中的 yaml </namespace> </pod>

[英]kubectl get pod <pod> -n <namespace> -o yaml in kubernetes client-go

现在我在命令的帮助下将 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) } } }

这个 function 将打印我应该使用的 pod 项目中的功能列表

感谢你的回答

yaml只是 etcd 中 kubernetes 内部存储中的 Pod object 的表示。 使用你的client-go ,你得到的是v1.Pod类型的Pod实例。 所以你应该能够使用这个 object 本身并获得你想要的任何东西,例如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/Marshal.k8s.io/yaml#

Instead of yaml if you want to use json , you can simply use the Marshal function https://pkg.go.dev/k8s.io/apiserver/pkg/apis/example/v1#Pod.Marshal provided by the v1.Pod struct 本身,就像任何其他 Go object 一样。

使用 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM