首页 > 后端开发 > Golang > 将 Kubernetes YAML 文件反序列化为 Go Struct 时如何解决'No Kind Registered”错误?

将 Kubernetes YAML 文件反序列化为 Go Struct 时如何解决'No Kind Registered”错误?

Patricia Arquette
发布: 2024-10-29 16:26:02
原创
838 人浏览过

How to Resolve

将 Kubernetes YAML 文件反序列化为 Go 结构体

将 Kubernetes YAML 文件反序列化为 Go 结构体是开发与 Kubernetes API 交互的程序时的一项常见任务。操作方法如下:

问题:

当尝试将 Kubernetes YAML 文件反序列化为 Go 结构时,您可能会遇到错误,指出“no kind '您的种类'已注册版本'您的版本'”。这是因为 Kubernetes schema 不会自动注册。

解决方案:

要解决此问题,请导入适合您的 Kubernetes API 组和版本的安装包与. 一起工作。例如,对于应用程序 v1beta1,使用:

_ "k8s.io/client-go/pkg/apis/extensions/install"
登录后复制

对于其他资源,例如 v1 中的服务,从 pkg/api 导入安装包:

_ "k8s.io/client-go/pkg/api/install"
登录后复制

示例代码:

这是一个完整的工作 Go 程序示例,它反序列化代表部署的 Kubernetes YAML 文件:

package main

import (
    "fmt"

    "k8s.io/client-go/pkg/api"
    _ "k8s.io/client-go/pkg/apis/extensions/install" // Important import
)

func main() {
    decode := api.Codecs.UniversalDeserializer().Decode

    deployment := `
    apiVersion: extensions/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
    `

    obj, _, err := decode([]byte(deployment), nil, nil)
    if err != nil {
        fmt.Printf("%#v", err)
    }

    fmt.Printf("%#v\n", obj)
}
登录后复制

通过导入正确的安装包,您可以成功反序列化 Kubernetes将 YAML 文件转换为 Go 结构。

以上是将 Kubernetes YAML 文件反序列化为 Go Struct 时如何解决'No Kind Registered”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板