Masalah:
Nyahsiri fail YAML Kubernetes ke dalam struct Go.
Ralat Ditemui:
no kind "Deployment" is registered for version "apps/v1beta1"
Penyelesaian:
Untuk menyelesaikan ralat, anda perlu mengimport pakej skema Kubernetes yang diperlukan . Ini mengarahkan penyahkod jenis yang perlu dipertimbangkan semasa menyahsiri YAML.
Import pakej berikut:
<code class="go">_ "k8s.io/client-go/pkg/apis/extensions/install"</code>
Sebab:
Kubernetes skema tidak didaftarkan secara automatik dengan penyahkod. Dengan mengimport pakej pemasangan, anda secara eksplisit mendaftarkan skema untuk sambungan/v1beta1 kumpulan API, yang termasuk jenis sumber Penggunaan.
Contoh Kerja Lengkap:
<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: 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 ` func main() { decode := api.Codecs.UniversalDeserializer().Decode obj, _, err := decode([]byte(service), nil, nil) if err != nil { panic(err) } fmt.Printf("%#v\n", obj) }</code>
Nota:
Dalam contoh yang dikemas kini, sumber Deployment ditakrifkan menggunakan kumpulan API sambungan/v1beta1, iaitu kumpulan API yang betul untuk sumber Deployment dalam versi Kubernetes sebelum 1.9. Untuk Kubernetes 1.9 dan lebih baru, anda harus menggunakan kumpulan API aplikasi/v1.
Atas ialah kandungan terperinci Cara Menyahseri Fail YAML Kubernetes ke dalam Go Structs: Mengapa Saya Mendapat Ralat \'tiada jenis \'Deployment\' didaftarkan untuk versi \'apps/v1beta1\'\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!