2017-10-26 7 views
0

、etcd v3ではインフォメーションストアが、私は以下のような情報を取得するには、コマンド「を取得etcdctl」を使用します。 enter image description herekubernetes 1.6でetcd v3のprotobufデシリアライゼーションを実行する方法は? kubernetes 1.6では

私の質問は、「protocによる情報をデシリアライズする方法の情報をデシリアライズする方法です?あなたは私たちがキャッチされ、防止に固定(etcd2がない保存 サポートしていますbase64でエンコードいるProtobufあるetcd2と ストレージを、いるProtobuf珍しいデータを持っている:--raw「?

コマンド私は、ウェブサイト上で論文を読みます」バイナリ値)。1.6では、デフォルトでetcd3モードになります。 バイナリ値をサポートしています 値

4バイトに対して次の形である "アプリケーション/ vnd.kubernetes.protobuf" に格納するES、およびデフォルト - runtime.Unknown のk8s\x00いるProtobufエンコード(PKG /ランタイム/ types.go#不明) * "typeMeta"フィールドはAPIから返されるkindとapiVersionの同じ値に設定されます * typeMetaで指定されたgolang構造体のprotobufでエンコードされたバイトに設定された "raw"フィールド - マジックナンバーなし

これをデコードするには、

head-4(str ip魔法の数字)| protoc --raw(プロトをデコード)

あなたはその後、WELとしてprotocを使用して、生の体をデコードすることができます。」

が、私はいずれかがそれを知っている、それを実行する方法がわかりませんか?

答えて

1

この1

ETCDCTL_API=3 etcdctl get /registry/namespaces/default -w protobuf | protoc --decode_raw 

出力は

1 { 
    1: 14841639068965178418 
    2: 10276657743932975437 
    3: 7839988 
    4: 2 
} 
2 { 
    1: "/registry/namespaces/default" 
    2: 11 
    3: 11 
    4: 1 
    5: "k8s\000\n\017\n\002v1\022\tNamespace\022c\nI\n\007default\022\000\032\000\"\000*$20b6cdfa-9929-11e7-8b62-005056b549b62\0008\000B\014\010\305\203\351\315\005\020\221\356\217\314\003z\000\022\014\n\nkubernetes\032\010\n\006Active\032\000\"\000" 
} 
4: 1 
を次のようにする必要がありますしてみてください

ところで、私はkubernetesのソースに関連するprotoファイルが見つかりませんでした。

関連する問題