Kubernetes YAML を逆シリアル化するときに発生する「種類の「デプロイメント」がバージョン「apps/v1beta1」に登録されていません」というエラーを修正する方法

Mary-Kate Olsen
リリース: 2024-10-30 20:36:02
オリジナル
381 人が閲覧しました

How to Fix

Kubernetes YAML ファイルを逆シリアル化する方法

問題

次を使用して Kubernetes YAML ファイルを Go 構造体に逆シリアル化しようとしたときにエラーが発生しました。 api.Codecs.UniversalDecoder().Decode 関数。エラーには、「種類の "Deployment" がバージョン "apps/v1beta1" に登録されていません。

問題の理解

Kubernetes YAML ファイルを逆シリアル化するとき、この場合、Deployment オブジェクトは API の apps/v1beta1 バージョンに登録されています。

解決策

この問題を解決するには、を登録するパッケージをインポートする必要があります。これは、コードに次の行を追加することで実現できます:

<code class="go">_ "k8s.io/client-go/pkg/apis/extensions/install"</code>
ログイン後にコピー

このインポートにより、Deployment オブジェクトのスキーマが登録され、逆シリアル化プロセス中に使用できるようになります。 .

作業例

これは、必要なインポートを組み込んだ、変更された動作する 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>
ログイン後にコピー

このプログラムを実行すると、Deployment オブジェクトは問題なく正常に逆シリアル化されるはずです。前述のエラーが発生しました。

以上がKubernetes YAML を逆シリアル化するときに発生する「種類の「デプロイメント」がバージョン「apps/v1beta1」に登録されていません」というエラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!