![](/img/trans.png)
[英]Kubernetes `client-go` - How to get container status in a 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.