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
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,就像任何其他函数一样去对象。
- 2 回答
- 0 关注
- 140 浏览
添加回答
举报