Etcd中的k8s数据
1. 读取数据key
使用以下命令列出所有的key。
ETCDCTL_API=3 etcdctl --endpoints=<etcd-ip-1>:2379,<etcd-ip-2>:2379,<etcd-ip-3>:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --key=/etc/kubernetes/pki/apiserver-etcd-client.key --cert=/etc/kubernetes/pki/apiserver-etcd-client.crt get / --prefix --keys-only参数说明:
--cacert="" verify certificates of TLS-enabled secure servers using this CA bundle
--cert="" identify secure client using this TLS certificate file
--key="" identify secure client using this TLS key file
--endpoints=[127.0.0.1:2379] gRPC endpoints可以使用alias来重命名etcdctl一串的命令
alias ectl='ETCDCTL_API=3 etcdctl --endpoints=<etcd-ip-1>:2379,<etcd-ip-2>:2379,<etcd-ip-3>:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --key=/etc/kubernetes/pki/apiserver-etcd-client.key --cert=/etc/kubernetes/pki/apiserver-etcd-client.crt'2. 集群数据
2.1. node
/registry/minions/<node-ip-1>
/registry/minions/<node-ip-2>
/registry/minions/<node-ip-3>其他信息:
3. k8s对象数据
k8s对象数据的格式
3.1. namespace
3.2. namespace级别对象
以下以常见k8s对象为例:
service
4. 读取数据value
由于k8s默认etcd中的数据是通过protobuf格式存储,因此看到的key和value的值是一串字符串。
alias ectl='ETCDCTL_API=3 etcdctl --endpoints=:2379,:2379,:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --key=/etc/kubernetes/pki/apiserver-etcd-client.key --cert=/etc/kubernetes/pki/apiserver-etcd-client.crt'
其中key可以通过base64解码出来
value是值可以通过安装etcdhelper工具解析出来。
alias ehelper='etcdhelper -key /etc/kubernetes/pki/apiserver-etcd-client.key -cert /etc/kubernetes/pki/apiserver-etcd-client.crt -cacert /etc/kubernetes/pki/etcd/ca.crt'
5. 注意事项
由于k8s的etcd数据为了性能考虑,默认通过
protobuf格式存储,不要通过手动的方式去修改或添加k8s数据。不推荐使用json格式存储etcd数据,如果需要json格式,可以使用
--storage-media-type=application/json参数存储,参考:https://github.com/kubernetes/kubernetes/issues/44670
6. 快捷命令
由于etcdctl的命令需要添加很多认证参数和endpoints的参数,因此可以使用别名的方式来简化命令。
6.1. etcdhelper的使用
etcdhelper文档参考:https://github.com/openshift/origin/tree/master/tools/etcdhelper
示例
7. RBAC
附RBAC相关的key。
clusterrolebindings
clusterroles
rolebindings
roles
参考:
https://github.com/etcd-io/etcd/tree/master/etcdctl
https://github.com/openshift/origin/tree/master/tools/etcdhelper
https://github.com/kubernetes/kubernetes/issues/44670
最后更新于
这有帮助吗?