gpt4 book ai didi

go - core.v1.Pod.PodSpec 中未填充 cpu/内存量

转载 作者:数据小太阳 更新时间:2023-10-29 03:11:25 25 4
gpt4 key购买 nike

使用以下代码:

func GetPods(clientset *kubernetes.Clientset, name, namespace string) ([]corev1.Pod, error) {
list, err := clientset.CoreV1().Pods(namespace).List(metav1.ListOptions{
LabelSelector: fmt.Sprintf("app=%s", name),
})
if err != nil {
return nil, err
}
return list.Items, nil
}

然后使用gopkg.in/yaml.v2将结果转储到yaml中,这里是描述容器资源的yaml子句:

resources:
limits:
cpu:
format: DecimalSI
memory:
format: BinarySI
requests:
cpu:
format: DecimalSI
memory:
format: BinarySI

其中不包括我实际感兴趣的任何实际资源量,使用 kubectl get pod xxx -o yaml 应该看起来像这样:

resources:
limits:
cpu: "4"
memory: 8Gi
requests:
cpu: 200m
memory: 100Mi

那么如何使用 golang 库正确获取包含所有资源信息的 pod spec yaml?上面的过程我做错了什么?

更新

我注意到 Pod.StringPod.Marshal方法。

pod.String() 输出似乎是 core.v1.Pod 实例的格式化字符串,这对我来说没什么用,因为它不是连载。

Pod.Marshal() 给出一个字节数组,打印时包含大量乱码。该方法本身是 k8s.io/api/core/v1/generated.pb.go 中那些未记录的方法之一,我真的不知道如何处理它的输出:

func (p *PodResolver) SpecYaml() (string, error) {
bs, err := p.pod.Marshal()
fmt.Println(string(bs))
return string(bs), err
}
// prints a whole lot of gibberish like cpu\x12\x03\n\x014\n\x0f\n\x06memory\x12\x05\n\x038Gi\x12\r\n\x03cpu\x12\x06\n\x04200m\x12\x11\n\x06memory\x12\a\n\x05100MiJ-\n\n

最佳答案

您可以简单地在数量字段上调用 ​​String() 方法,它会返回类似于“100m”的内容

Quantity 类型似乎没有任何 yaml 标签。

关于go - core.v1.Pod.PodSpec 中未填充 cpu/内存量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50734067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com