gpt4 book ai didi

go - 将 *extensions.Deployment 转换为 *v1beta1.Deployment (Kubernetes client-go)

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

对于 Kubernetes client-go,如何使用 Convert() 将 *extensions.Deployment 转换为 *v1beta1.Deployment?当我运行下面的程序时,出现此错误:

2017/01/12 22:40:42 转换失败:将 (extensions.Deployment).CreationTimestamp.Time.sec 转换为 (v1beta1.Deployment).CreationTimestamp.Time.sec:无法设置目标。 (试图用未导出的字段深度复制某些东西?)

package main

import (
"log"

_ "k8s.io/client-go/1.4/kubernetes"
"k8s.io/client-go/1.4/pkg/api"
"k8s.io/client-go/1.4/pkg/apis/extensions"
"k8s.io/client-go/1.4/pkg/apis/extensions/v1beta1"
"k8s.io/client-go/1.4/pkg/runtime"
)

const yaml = `
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: push
`

func main() {

d := api.Codecs.UniversalDecoder()
obj, _, err := d.Decode([]byte(yaml), nil, nil)
if err != nil {
log.Fatalf("could not decode yaml: %s\n%s", yaml, err)
}

src := obj.(*extensions.Deployment)
s := runtime.NewScheme()
dst := &v1beta1.Deployment{}
err = s.Convert(src, dst, 0)
if err != nil {
log.Fatalf("failed to convert: %s", err)
}
}

我希望调用 v1beta1.Convert_extensions_Deployment_To_v1beta1_Deployment() 并处理未导出的字段。该函数注册在main_init()中,但不被Convert()调用。

我什至可以使用 Convert() 进行这种转换,还是应该使用 json.Unmarshal() 和 json.Marshal()?

最佳答案

使用 api.Scheme.Convert 而不是 runtime.NewScheme().Convert

https://github.com/kubernetes/client-go/issues/151 找到解决方案

关于go - 将 *extensions.Deployment 转换为 *v1beta1.Deployment (Kubernetes client-go),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41623593/

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