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 關注
- 169 瀏覽
添加回答
舉報