>  기사  >  백엔드 개발  >  Kubernetes YAML을 역직렬화할 때 \"no kind \"배포\"가 버전 \"apps/v1beta1\"\"에 등록됨 오류를 수정하는 방법은 무엇입니까?

Kubernetes YAML을 역직렬화할 때 \"no kind \"배포\"가 버전 \"apps/v1beta1\"\"에 등록됨 오류를 수정하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-30 20:36:02381검색

How to Fix

Kubernetes YAML 파일을 역직렬화하는 방법

문제

다음을 사용하여 Kubernetes YAML 파일을 Go 구조체로 역직렬화하려고 할 때 오류가 발생했습니다. api.Codecs.UniversalDecoder().Decode 함수. 오류에는 "apps/v1beta1" 버전에 "배포" 종류가 등록되지 않았습니다.

문제 이해

Kubernetes YAML 파일을 역직렬화할 때 다음의 스키마를 확인해야 합니다. 이 경우 배포 개체는 API의 apps/v1beta1 버전에 등록됩니다.

해결책

문제를 해결하려면 apps/v1beta1 버전에 대한 스키마입니다. 이는 코드에 다음 줄을 추가하여 달성할 수 있습니다.

<code class="go">_ "k8s.io/client-go/pkg/apis/extensions/install"</code>

이 가져오기를 통해 배포 객체의 스키마가 등록되어 역직렬화 프로세스 중에 사용할 수 있게 됩니다. .

작업 예

다음은 필요한 가져오기를 통합하는 수정된 작업 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을 역직렬화할 때 \"no kind \"배포\"가 버전 \"apps/v1beta1\"\"에 등록됨 오류를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.