本节练习和Kubernetes集群里的Etcd没有关系,主要是让大家理解Etcd是如何工作的。建议做本节练习时,对两个主机进行如下设置。
(1)主机名vms91.rhce.cc,对应的IP为192.168.26.91。
(2)主机名vms92.rhce.cc,对应的IP为192.168.26.92。
第1步 先在vms91上配置单节点的Etcd,然后通过yum install etcd -y命令来安装Etcd,之后修改Etcd的启动脚本文件/usr/lib/systemd/system/etcd.service,把ExecStart的内容换成如下内容。
启动脚本的内容也可以通过如下命令来获取。
第2步 重启服务。
etcdctl是Etcd的客户端工具,它有两个版本:v2和v3。默认使用的是v2,如果要使用v3版本,需要把环境变量ETCDCTL_API设置为3。
etcdctl的选项包括:--endpoints用于指定连接到哪台服务器,--cacert用于指定CA的证书,--cert用于指定自己的证书,--key用于指定自己的key。
第3步 在vms91上用etcdctl工具连接到服务器。
为了更方便后面使用,我们把里面的一些参数设置为变量,后面直接引用变量即可。
第4步 设置变量。
这样后面再执行etcdctl命令时直接引用$url变量就可以了。
第5步 往Etcd里写数据。
第6步 开始备份。
现在数据已经备份到snap1.data里了,也就是在snap1.data里含有数据aa=xx1,bb=xx2。
第7步 把Etcd里的数据删除。
可以看到,此时Etcd里没有aa和bb的数据了,但是备份文件里有,所以我们开始恢复数据。
第8步 停止Etcd。
第9步 删除Etcd存储数据的目录/var/lib/etcd/default.etcd。
第10步 开始恢复数据。
这样又会产生存储目录,需要把此目录的所有者和所属组改为Etcd,然后启动Etcd。
第11步 修改所有者并启动Etcd。
第12步 验证数据有没有恢复,查看aa和bb的值。
可以看到,数据又恢复了。
第13步 为了后面的多节点练习,现在关闭Etcd并清理数据。
本练习需要两台服务器:vms91和vms92。在vms92上先通过yum install etcd -y命令安装Etcd。
第1步 在vms91上修改启动脚本文件/usr/lib/systemd/system/etcd.service,把ExecStart的内容换成如下内容。
要注意这里的主机名和IP,启动脚本的内容也可以通过如下命令来获取。
第2步 在vms92上安装Etcd。
第3步 在vms92上修改启动脚本文件/usr/lib/systemd/system/etcd.service,把ExecStart的内容换成如下内容。
要注意这里的主机名和IP,启动脚本的内容也可以通过如下命令来获取。
第4步 在两台机器上分别启动Etcd。
因为集群里包含vms91和vms92两台机器,所以启动Etcd时需要两台都启动,如果一台没有启动,另外一台在执行systemctl start etcd命令时会卡住,直到另外一台启动。
第5步 在vms91上测试写数据,与之前一样先定义变量。
第6步 写一个数据aa=xx1,注意在etcdctl里写时aa和xx1之间是空格而不是等号。
这里已经写好了,如果在执行etcdctl命令时卡住,通过journal -xe | grep etcd命令查看日志,大概会看到如下类似的错误。
此时在两台机器上关闭Etcd,删除目录/var/lib/etcd/cluster.etcd/之后重新启动,再次执行etcdctl命令即可。
第7步 切换到vms92上进行测试。
可以看到,在vms91上写的数据,现在是能同步到vms92的。
第8步 在vms92上写数据bb=yy1。
第9步 在vms91上查看,也是能看到数据的。
下面开始备份和恢复。
现在Etcd里存在数据aa=xx1和bb=yy1,下面我们来备份。备份在任一节点上做即可,这里的操作是在vms91上进行的。
第10步 备份数据。
第11步 把这个备份文件同步到其他所有节点,这里同步到vms92上。
把数据删除,在任一节点上执行删除操作即可,这里的操作是在vms91上进行的。
第12步 删除Etcd里的数据。
第13步 在vms92上查看。
可以看到,已经没有数据了。
但是,我们的备份文件里是有数据的,下面开始恢复数据。
第14步 在所有节点上停止Etcd。
第15步 在所有节点上删除存储Etcd数据的目录。
第16步 在每个节点上恢复数据。
这里要把X换成节点的数字,比如1或2。
第17步 在所有节点上修改/var/lib/etcd的所有者和所属组。
这里加了-R选项,表示递归,即/var/lib/etcd目录下所有的文件及子目录的所有者和所属组都会被修改。
第18步 测试,可以在vms91上测试也可以在vms92上测试,这里是在vms91上测试。
第1步 在vms91上创建目录/ca2,用于存储Kubernetes里Etcd的证书。
第2步 切换到vms10(Kubernetes的Master机器)上,把需要的证书定义为变量。
第3步 把证书拷贝到192.168.26.91的/ca2目录里。
切换到vms91上,查看/ca2里的证书文件,然后分别为这些证书定义好变量,方便后面使用。
第4步 在vms91上定义变量,指定这些证书。
第5步 远程登录到K8s上的Etcd。