写点什么

查看 k8s 的 etcd 数据

作者:程序员欣宸
  • 2022 年 9 月 05 日
    广东
  • 本文字数:2455 字

    阅读完需:约 8 分钟

查看k8s的etcd数据

欢迎访问我的 GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos


  • kubernetes 的 API 对象的数据都保存在 etcd 中,本章实战如何查看这些数据;

环境信息

  • 实战环境的版本信息如下,请确保以下软件都已运行正常:


  1. 操作系统 :CentOS Linux release 7.6.1810

  2. Kubernetes:1.13

  3. Go 版本:1.12


  • 实际操作的机器可以用 kubectl 操作 k8s,并且已经安装了 Go 1.12 版本;

准备工作

  • 下载 etcd,地址是:https://github.com/etcd-io/etcd/releases ,选 3.3.10 版本,如下图:


  • 解压后找到 etcdctl 文件,将其放入 $GOPATH\bin 目录,记得执行 chown 命令给予可执行权限;

  • 现在准备工作已经完成,接下来试试 etcdctl 工具查看 etcd 数据;

查看 etcd 数据的实际操作

  • 执行查询时前缀是固定的,如下所示,使用这个前缀再加上 etcd 的查找命令即可成功查询:


ETCDCTL_API=3 ./etcdctl --endpoints=https://127.0.0.1:2379 \--cacert=/etc/kubernetes/pki/etcd/ca.crt \--cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt \--key=/etc/kubernetes/pki/etcd/healthcheck-client.key
复制代码


  • 查看所有 etcd 的所有 key,执行以下命令:


ETCDCTL_API=3 etcdctl \--endpoints=https://127.0.0.1:2379 \--cacert=/etc/kubernetes/pki/etcd/ca.crt \--cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt \--key=/etc/kubernetes/pki/etcd/healthcheck-client.key \get / --prefix --keys-only
复制代码


  • 查到的结果如下:


[root@master ~]# ETCDCTL_API=3 etcdctl \> --endpoints=https://127.0.0.1:2379 \> --cacert=/etc/kubernetes/pki/etcd/ca.crt \> --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt \> --key=/etc/kubernetes/pki/etcd/healthcheck-client.key \> get / --prefix --keys-only/registry/apiregistration.k8s.io/apiservices/v1.
/registry/apiregistration.k8s.io/apiservices/v1.apps
/registry/apiregistration.k8s.io/apiservices/v1.authentication.k8s.io
/registry/apiregistration.k8s.io/apiservices/v1.authorization.k8s.io
/registry/apiregistration.k8s.io/apiservices/v1.autoscaling
/registry/apiregistration.k8s.io/apiservices/v1.batch
/registry/apiregistration.k8s.io/apiservices/v1.networking.k8s.io...
复制代码


  • 查看指定 key 的内容,如果您的系统用的是 flannel 网络插件,可以执行以下命令查看相关数据:


ETCDCTL_API=3 etcdctl \--endpoints=https://127.0.0.1:2379 \--cacert=/etc/kubernetes/pki/etcd/ca.crt \--cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt \--key=/etc/kubernetes/pki/etcd/healthcheck-client.key \get /registry/configmaps/kube-system/kube-flannel-cfg
复制代码


  • 看到的数据如下所示:


[root@master ~]# ETCDCTL_API=3 etcdctl \> --endpoints=https://127.0.0.1:2379 \> --cacert=/etc/kubernetes/pki/etcd/ca.crt \> --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt \> --key=/etc/kubernetes/pki/etcd/healthcheck-client.key \> get /registry/configmaps/kube-system/kube-flannel-cfg/registry/configmaps/kube-system/kube-flannel-cfgk8s
v1 ConfigMap??kube-flannel-cfg kube-system"*$c2b898e2-3a58-11e9-86b5-000c292593442????ZappflannelZ
tiernodeb?0kubectl.kubernetes.io/last-applied-configuration?{"apiVersion":"v1","data":{"cni-conf.json":"{\n \"name\": \"cbr0\",\n \"plugins\": [\n {\n \"type\": \"flannel\",\n \"delegate\": {\n \"hairpinMode\": true,\n \"isDefaultGateway\": true\n }\n },\n {\n \"type\": \"portmap\",\n \"capabilities\": {\n \"portMappings\": true\n }\n }\n ]\n}\n","net-conf.json":"{\n \"Network\": \"10.244.0.0/16\",\n \"Backend\": {\n \"Type\": \"vxlan\"\n }\n}\n"},"kind":"ConfigMap","metadata":{"annotations":{},"labels":{"app":"flannel","tier":"node"},"name":"kube-flannel-cfg","namespace":"kube-system"}}z?cni-conf.json?{ "name": "cbr0", "plugins": [ { "type": "flannel", "delegate": { "hairpinMode": true, "isDefaultGateway": true } }, { "type": "portmap", "capabilities": { "portMappings": true } } ]}Znet-conf.jsonI{ "Network": "10.244.0.0/16", "Backend": { "Type": "vxlan" }}"
复制代码


  • 如上所示,有少量不可见字符,这是因为 etcd 中存储的并不是 json 的原文,而是 protocol buffer 序列化后的数据,不过还是有部分内容是可读的;

  • 查看节点信息,如下所示,当前环境有 master 和 node0 两个节点:


[root@master ~]# ETCDCTL_API=3 etcdctl \> --cacert=/etc/kubernetes/pki/etcd/ca.crt \> --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt \> --key=/etc/kubernetes/pki/etcd/healthcheck-client.key \> get /registry/minions/ --prefix --keys-only/registry/minions/master
/registry/minions/node0

复制代码


  • 执行以下命令可以查看 node0 节点的信息,由于结果中有很多序列化之后的不可读字符,就不把结果贴出来了:


ETCDCTL_API=3 etcdctl \--cacert=/etc/kubernetes/pki/etcd/ca.crt \--cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt \--key=/etc/kubernetes/pki/etcd/healthcheck-client.key \get /registry/minions/node0
复制代码

etcd 中的 key 及其含义

欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...


发布于: 2022 年 09 月 05 日阅读数: 34
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018.04.19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论

发布
暂无评论
查看k8s的etcd数据_Kubernetes_程序员欣宸_InfoQ写作社区