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.“
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.
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>
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 .
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>
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!