首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用kubernetes 1.6在etcd v3中执行原型反序列化?

如何使用kubernetes 1.6在etcd v3中执行原型反序列化?
EN

Stack Overflow用户
提问于 2017-10-26 12:40:15
回答 1查看 1K关注 0票数 0

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

我的问题是如何反序列化信息?如何通过"protoc“命令反序列化信息?我在一个网站上读到了这篇论文:

“我们捕获并修复了etcd2 protobuf存储中的异常数据,这是base64编码的原型(etcd2不支持存储二进制值)。在1.6中,我们默认使用支持二进制值的etcd3模式,默认存储在”application/vnd.kubernetes.Probuf“中,这是这些值的以下形式 4字节-- k8s\x00 runtime.Unknown的原始编码(pkg/运行时/ the . no #未知)*将" typeMeta“字段设置为将从API *返回的相同类型的值和apiVersion,”原始“字段集设置为typeMeta标识的golang结构的原始编码字节--没有魔术号 您可以使用以下方法来解码: 头-4 (去掉幻数)\_-_ 然后,您可以使用protoc作为wel对原始体进行解码。“

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

EN

回答 1

Stack Overflow用户

发布于 2017-10-26 16:14:22

试试这个

代码语言:javascript
复制
ETCDCTL_API=3 etcdctl get /registry/namespaces/default -w protobuf | protoc --decode_raw

输出应该如下所示

代码语言:javascript
复制
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文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46954609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档