如何使用kubernetes 1.6在ETCDv3中执行protobuf反序列化?

如何使用kubernetes 1.6在ETCDv3中执行protobuf反序列化?,kubernetes,protocol-buffers,etcd3,Kubernetes,Protocol Buffers,Etcd3,在ETCDv3中的信息存储库kubernetes 1.6中,我使用etcdctl get命令获取信息,如下所示: 我的问题是如何反序列化信息?如何通过proto-raw命令反序列化信息?我在一个网站上读了这篇文章: 你有我们在protobuf中捕获并修复的异常数据 带有etcd2的存储,它是base64编码的协议,但etcd2没有 支持存储二进制值。在1.6中,我们默认为etcd3模式, 它支持二进制值,默认存储在 application/vnd.kubernetes.protobuf,它是

在ETCDv3中的信息存储库kubernetes 1.6中,我使用etcdctl get命令获取信息,如下所示:

我的问题是如何反序列化信息?如何通过proto-raw命令反序列化信息?我在一个网站上读了这篇文章:

你有我们在protobuf中捕获并修复的异常数据 带有etcd2的存储,它是base64编码的协议,但etcd2没有 支持存储二进制值。在1.6中,我们默认为etcd3模式, 它支持二进制值,默认存储在 application/vnd.kubernetes.protobuf,它是 价值观

4字节-运行时的k8s\x00 protobuf编码。未知 pkg/runtime/types.goUnknown *typeMeta字段设置为将从API返回的相同种类和apiVersion值 *设置为typeMeta标识的golang结构的protobuf编码字节的原始字段-无幻数

您可以使用以下方法对其进行解码:

头-4条幻数| proto-raw解码proto

然后你也可以用protoc解码原始身体

但是我不知道怎么做,有人知道吗?

试试这个

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源代码中没有找到相关的原始文件