本文所有命令均在 etcdctl 默认api ,即 etcd api v2 下 *** 作,v3 指令略有改动可能不匹配,详情请查阅官方文档: https://etcd.io/docs/
查看版本
查看 Etcd 暴露出来的 prometheus 指标,在 prometheus 对其监控时可调用
查看 etcd、etcd api v2 版本
查看 etcd、etcd api v3 版本
查询节点 ID
删除节点,如删除 Eecd3
修改配置文件 etcd.conf,修改参数 ETCD_INITIAL_CLUSTER 并移除节点信息,重启etcd服务
1)在群集中删除故障节点
在任意一 etcd 节点服务器查询该节点 ID,通过ID删除故障节点, *** 作步骤如下
删除目标节点的数据
2)编辑目标节点配置文件,将 --initial-cluster-state值改为 existing (否则会生成新的ID,与原ID不匹配将无法加入集群)
3)加入节点至集群,需输入目标节点的 etcd name 和 PEER_URLS
4)启动目标节点 etcd 服务
5)查看集群健康状态
停止 Etcd 服务
备份并删除当前 Etcd 数据
注意:此方法恢复数据可能不完整,仅建议极端环境下使用,常规数据恢复请使用快照
https://blog.csdn.net/ccy19910925/category_7590496.html
假设你已经通过kubeadm 安装好了K8S 和对应的etcd集群
Kubenretes1.6中使用etcd V3版本的API,使用etcdctl直接ls的话只能看到/kube-centos一个路径。需要在命令前加上ETCDCTL_API=3这个环境变量才能看到kuberentes在etcd中保存的数据。
如果是使用 kubeadm 创建的集群,在 Kubenretes 1.11 中,etcd 默认使用 tls ,这时你可以在 master 节点上使用以下命令来访问 etcd :
-w指定输出格式
将得到这样的json的结果:
使用--prefix可以看到所有的子目录,如查看集群中的namespace:
输出结果中可以看到所有的namespace。
key的值是经过base64编码,需要解码后才能看到实际值,如:
etcd中kubernetes的元数据
我们使用kubectl命令获取的kubernetes的对象状态实际上是保存在etcd中的,使用下面的脚本可以获取etcd中的所有kubernetes对象的key:
注意,我们使用了ETCD v3版本的客户端命令来访问etcd。
通过输出的结果我们可以看到kubernetes的原数据是按何种结构包括在kuberentes中的,输出结果如下所示:
我们可以看到所有的Kuberentes的所有元数据都保存在/registry目录下,下一层就是API对象类型(复数形式),再下一层是namespace,最后一层是对象的名字。
以下是etcd中存储的kubernetes所有的元数据类型:
转自
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)