Heim > Backend-Entwicklung > Golang > Wie behebt man den Fehler „keine Art „Bereitstellung' ist für die Version „apps/v1beta1' registriert' beim Deserialisieren von Kubernetes YAML?

Wie behebt man den Fehler „keine Art „Bereitstellung' ist für die Version „apps/v1beta1' registriert' beim Deserialisieren von Kubernetes YAML?

Mary-Kate Olsen
Freigeben: 2024-10-30 20:36:02
Original
509 Leute haben es durchsucht

How to Fix

So deserialisieren Sie eine Kubernetes-YAML-Datei

Problem

Beim Versuch, eine Kubernetes-YAML-Datei mithilfe von in eine Go-Struktur zu deserialisieren, ist ein Fehler aufgetreten die Funktion api.Codecs.UniversalDecoder().Decode. Der Fehler lautet: „Für die Version „apps/v1beta1“ ist keine Art „Bereitstellung“ registriert.“

Das Problem verstehen

Beim Deserialisieren einer Kubernetes-YAML-Datei müssen Sie sicherstellen, dass das Schema der Objekt ist registriert. In diesem Fall wird das Bereitstellungsobjekt unter der apps/v1beta1-Version der API registriert.

Lösung

Um das Problem zu beheben, müssen Sie das Paket importieren, das das registriert Schema für die apps/v1beta1-Version Dies kann durch Hinzufügen der folgenden Zeile zu Ihrem Code erreicht werden:

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

Dieser Import stellt sicher, dass das Schema für das Deployment-Objekt registriert und für die Verwendung während des Deserialisierungsprozesses verfügbar ist .

Arbeitsbeispiel

Hier ist ein modifiziertes funktionierendes Go-Programm, das den erforderlichen Import enthält:

<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>
Nach dem Login kopieren

Wenn Sie dieses Programm ausführen, sollte das Deployment-Objekt ohne erfolgreich deserialisiert werden Es ist der oben genannte Fehler aufgetreten.

Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „keine Art „Bereitstellung' ist für die Version „apps/v1beta1' registriert' beim Deserialisieren von Kubernetes YAML?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage