Kubernetes 1.19.0——ETCD

2020-09-14 10:36:07 浏览数 (1)

ETCD流程

ETCD集群是一个分布式系统,使用Raft协议来维护集群内各个节点状态的一致性.

主机状态Leader,Follower,Candidate.

当集群初始化时候,每个节点都是Follower角色.

通过心跳与其他节点同步数据.

当Follower在一定时间内没有收到来自主节点的心跳,会将自己角色改变为Candidate,并发起一次选主投票.

配置etcd集群,建议可能是奇数个节点,而不要偶数个节点.

ETCD搭建

同之前搭建k8s 1.19.0版本一样,首先准备好3台机器

Etcd1:192.168.135.81

Etcd2:192.168.135.82

Etcd3:192.168.135.83

先在所有etcd节点上安装etcd

对于etcd来说,配置文件在/etc/etcd这个目录下面

其中[Member]用于配置单节点,[Clustering]用于配置集群

配置文件

ETCD_DATA_DIR="/var/lib/etcd/cluster.etcd"    ---数据保留路径

ETCD_LISTEN_PEER_URLS="http://192.168.135.81:2380,http://localhost:2380"

ETCD_LISTEN_CLIENT_URLS="http://192.168.135.81:2379,http://localhost:2379"

ETCD_NAME="etcd-81"  ---节点名

ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.135.81:2380"

ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379,http://192.168.26.135:2379"

ETCD_INITIAL_CLUSTER="etcd-81=http://192.168.135.81:2380,etcd-82=http://192.168.135.82:2380,etcd-83=http://192.168.135.83:2380" ---初始化节点的时候的所有节点

ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster" ---相当于一种密钥,需在所有节点都一致

ETCD_INITIAL_CLUSTER_STATE="new"  

参数含义

ETCD_NAME 节点名称,默认为default ETCD_DATA_DIR

服务运行数据保存的路径 ETCD_LISTEN_PEER_URLS

监听的同伴通信的地址,比如http://ip:2380,如果有多个,使用逗号分隔。需要 所有节点都能够访问,所以不要使用 localhost!

ETCD_LISTEN_CLIENT_URLS 监听的客户端服务地址.

ETCD_ADVERTISE_CLIENT_URLS 对外公告的该节点客户端监听地址,这个值会告诉集群中其他节点.

ETCD_INITIAL_ADVERTISE_PEER_URLS 对外公告的该节点同伴监听地址,这个值会告诉集群中其他节点.

ETCD_INITIAL_CLUSTER 集群中所有节点的信息,格式为 ETCD_INITIAL_CLUSTER_STATE 新建集群的时候,这个值为 new;假如加入已经存在的集群,这个值为 existing.

ETCD_INITIAL_CLUSTER_TOKEN 集群的ID,多个集群的时候,每个集群的ID必须保持唯一.

在所有节点的这份配置文件需保持同步(不同节点ip不同,注意红框中需修改成对应的ip)

注:ip一定要写对注:ip一定要写对

然后依次启动3个节点的etcd服务

查看集群状态信息 etcdctl member list

Leader已选出Leader已选出

到此etcd集群搭建完成

验证

现在在各节点通过etcdctl查看根下无任何数据

在Leader节点创建一个文件aa成功后,所有节点均有该文件

(不管在哪个节点创建或删除,均会同步至所有节点,此处为节约篇幅省略)

注:这里的根并不是系统的,而是指的etcd子系统的根/

ETCD的管理

版本管理

以上篇幅均采用的是ETCD的v2写法.

对于ETCD来说,它有2个版本,设置成v3版,子命令会增多,并且以键值对存储

通过export命令将环境设置成v3版本后子命令就变多了

注:各节点需同时设置同步注:各节点需同时设置同步

定义一个键值对

查看k1的值(各节点均一样,为节约篇幅这里只截图一个节点)查看k1的值(各节点均一样,为节约篇幅这里只截图一个节点)
也可以远程连接到其他机器进行查询也可以远程连接到其他机器进行查询

快照备份

对ETCD做快照(数据备份),可通过恢复快照的方式把数据恢复

etcdctl snapshot save snap1.db

快照里包含我们所写数据的,比如k1=v1

需同步至其他节点需同步至其他节点

模拟数据被清空数据恢复

删除数据删除数据

开始恢复数据:

在所有节点上关闭etcd,并删除/var/lib/etcd/里的所有数据

在所有节点将快照文件的所属组改成etcd

所有节点运行

etcdctl snapshot restore snap1.db --name etcd-8X --initial-cluster etcd-81=http://192.168.135.81:2380,etcd-82=http://192.168.135.82:2380,etcd-83=http://192.168.135.83:2380 --initial-advertise-peer-urls http://192.168.135.8X:2380 --data-dir /var/lib/etcd/cluster.etcd

注意红框需要改成对应节点的ip注意红框需要改成对应节点的ip

所有节点运行chown -R etcd.etcd /var/lib/etcd/改成etcd所属组

然后所有节点systemctl start etcd服务后查看,数据已恢复

0 人点赞