尝试使用 Kubernetes YAML 文件反序列化为 Go 结构时遇到错误api.Codecs.UniversalDecoder().Decode 函数。错误显示,“没有为版本“apps/v1beta1”注册任何类型的“部署”。
反序列化 Kubernetes YAML 文件时,必须确保在这种情况下,Deployment 对象是在 apps/v1beta1 版本的 API 下注册的。
要解决此问题,您需要导入注册 Deployment 对象的包。这可以通过将以下行添加到代码中来实现:
<code class="go">_ "k8s.io/client-go/pkg/apis/extensions/install"</code>
此导入可确保 Deployment 对象的架构已注册并可在反序列化过程中使用。 .
这是一个修改后的工作 Go 程序,其中包含必要的导入:
<code class="go">package main import ( "fmt" "k8s.io/client-go/pkg/api" "k8s.io/client-go/pkg/api/install" "k8s.io/client-go/pkg/apis/extensions/install" ) var service = ` apiVersion: apps/v1beta1 kind: Deployment metadata: name: my-nginx spec: replicas: 2 template: metadata: labels: run: my-nginx spec: containers: - name: my-nginx image: nginx ports: - containerPort: 80 ` func main() { decode := api.Codecs.UniversalDecoder().Decode obj, _, err := decode([]byte(service), nil, nil) if err != nil { fmt.Printf("%#v", err) } fmt.Printf("%#v\n", obj) }</code>
当您运行此程序时,部署对象应该成功反序列化,而无需遇到上述错误。
以上是如何修复反序列化 Kubernetes YAML 时出现的“没有为版本“apps/v1beta1”注册“部署”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!