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

我的问题是如何反序列化信息?如何通过"protoc“命令反序列化信息?我在一个网站上读到了这篇论文:
“我们捕获并修复了etcd2 protobuf存储中的异常数据,这是base64编码的原型(etcd2不支持存储二进制值)。在1.6中,我们默认使用支持二进制值的etcd3模式,默认存储在”application/vnd.kubernetes.Probuf“中,这是这些值的以下形式 4字节--
k8s\x00runtime.Unknown的原始编码(pkg/运行时/ the . no #未知)*将" typeMeta“字段设置为将从API *返回的相同类型的值和apiVersion,”原始“字段集设置为typeMeta标识的golang结构的原始编码字节--没有魔术号 您可以使用以下方法来解码: 头-4 (去掉幻数)\_-_ 然后,您可以使用protoc作为wel对原始体进行解码。“
但我不知道怎么做,有人知道吗?
发布于 2017-10-26 16:14:22
试试这个
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文件。
https://stackoverflow.com/questions/46954609
复制相似问题