user list Lists all users
user passwd Changes password of user
user grant-role Grants a role to a user
user revoke-role Revokes a role from a user
role add Adds a new role
role delete Deletes a role
role get Gets detailed information of a role
role list Lists all roles
role grant-permission Grants a key to a role
role revoke-permission Revokes a key from a role
check perf Check the performance of the etcd cluster
help
如:创建、查看、删除
文件存储是以表链接的形式。
[root@etcd1 ~]# #/ccx/date1是存储路径,"ccx is superhero"是数据内容
[root@etcd1 ~]# etcdctl put /ccx/date1 “ccx is superhero”
OK
[root@etcd1 ~]# etcdctl get /ccx/date1
/ccx/date1
ccx is superhero
[root@etcd1 ~]#
[root@etcd1 ~]# etcdctl del /ccx/date1
1
[root@etcd1 ~]#
[root@etcd1 ~]# etcdctl get /ccx/date1
其他节点访问该etcd
- 准确来说,叫做远程执行其他etcd命令罢了【注意,这仅仅是远程访问而已,并不是该集群的一部分】
命令:etcdctl --endpoints IP:2379 这跟需要执行的命令
【2和3的版本命令不一样】
- 如下,我在157上查看156这个etc的数据
[root@etcd2 ~]# #我查看3的内容,本地也需要切换到3的环境,否则命令找不到
[root@etcd2 ~]# export ETCDCTL_API=3
[root@etcd2 ~]# etcdctl --endpoints http://192.168.59.156:2379 get /ccx/date1
/ccx/date1
ccx is superhero
[root@etcd2 ~]#
[root@etcd2 ~]#
[root@etcd2 ~]# ip a | grep 59
inet 192.168.59.157/24 brd 192.168.59.255 scope global ens32
[root@etcd2 ~]#
- 比如我之前定义了版本3,现在想让其恢复到默认状态【默认位版本2】
注:k8s在1.5版本以后默认使用的是版本3向etcd写入数据。
- 命令:
unset ETCDCTL_API
[root@etcd1 ~]# export ETCDCTL_API=3
[root@etcd1 ~]#
[root@etcd1 ~]# unset ETCDCTL_API
[root@etcd1 ~]#
====================================================================
- 前面说过,最好是3台,我用2台以配置文件的形式加入,第三台用加入集群的方式。
-
注:这个没有真正的主节点概念,我只是用这个来做第一个配置,为了后面好说明,所以命其为 “主节点”
-
先停止etcd服务并清除现有数据【我是用上面单节点配置的,已经配置并启动etcd服务】
注:必须清空数据,否则会报错
[root@etcd1 ~]# systemctl stop etcd
[root@etcd1 ~]# rm -rf /var/lib/etcd/*
[root@etcd1 ~]#
[root@etcd1 ~]# ls /var/lib/etcd
修改配置文件
-
文件:
/etc/etcd/etcd.conf
-
可以看到,现在配置文件中可用的就这么几行
[root@etcd1 ~]# grep -o ‘[#].*’ /etc/etcd/etcd.conf
ETCD_DATA_DIR=“/var/lib/etcd/default.etcd”
ETCD_LISTEN_PEER_URLS=“http://localhost:2380,http://192.168.59.156:2380”
ETCD_LISTEN_CLIENT_URLS=“http://localhost:2379,http://192.168.59.156:2379”
ETCD_NAME=“default”
ETCD_ADVERTISE_CLIENT_URLS=“http://localhost:2379,http://192.168.59.156:2379”
[root@etcd1 ~]#
-
直接
vim /etc/etcd/etcd.conf
,将里面的东西删完,复制下面内容进去修改IP,其他不变。 -
192.168.59.156为我当前节点IP,192.168.59.157/158为我准备加入该节点的IP
[root@etcd1 ~]# vim /etc/etcd/etcd.conf
#数据存储位置【自定义】
ETCD_DATA_DIR=“/var/lib/etcd/cluster.etcd”
#服务器间通讯端口
ETCD_LISTEN_PEER_URLS=“http://192.168.59.156:2380,http://localhost:2380”
客户端通讯端口
ETCD_LISTEN_CLIENT_URLS=“http://192.168.59.156:2379,http://localhost:2379”
#集群名字【自定义】
ETCD_NAME=“etcd-156”
#端口监听
ETCD_INITIAL_ADVERTISE_PEER_URLS=“http://192.168.59.156:2380”
#端口监听
ETCD_ADVERTISE_CLIENT_URLS=“http://localhost:2379,http://192.168.59.156:2379”
#所有集群IP信息都需要列出来【自己和要加入该集群的ip,前面的名称是上面的集群名字,不能乱写】
ETCD_INITIAL_CLUSTER=“etcd-156=http://192.168.59.156:2380,etcd-157=http://192.168.59.157:2380”
#类似于秘钥【每台上面的这个值要一样】
ETCD_INITIAL_CLUSTER_TOKEN=“etcd-cluster”
#新集群值必须为new
ETCD_INITIAL_CLUSTER_STATE=“new”
-
参数详细说明:
-
ETCD_DATA_DIR
服务运行数据保存的路径 -
ETCD_NAME
节点名称,默认为default
-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必须保持唯一
导入配置文件到其他节点
- 主节点上将配置文件拷贝到另外一个节点上【导入前要先去另外节点上安装etcd服务】
[root@etcd1 ~]# scp /etc/etcd/etcd.conf 192.168.59.157:/etc/etcd/
root@192.168.59.157’s password:
etcd.conf 100% 567 984.1KB/s 00:00
[root@etcd1 ~]#
- 注:加入主节点其实和主节点的配置是一样的,为了方便说明才命其为:”其他节点“
安装etcd包
- 安装etcd包:
yum -y install etcd
修改配置文件
-
我在主节点上已经将配置文件导入过来了,所以直接将ip和NAME修改即可【其他不变】。
-
修改IP:在编辑界面输入:
:1,6s/156/157/g
可以直接替换1-6行的ip【仅替换1-6行】
- 修改
ETCD_NAME=
,修改规则如下图
- 如,我157修改完毕以后的配置文件信息如下
[root@etcd2 ~]# cat /etc/etcd/etcd.conf
ETCD_DATA_DIR=“/var/lib/etcd/cluster.etcd”
ETCD_LISTEN_PEER_URLS=“http://192.168.59.157:2380,http://localhost:2380”
ETCD_LISTEN_CLIENT_URLS=“http://192.168.59.157:2379,http://localhost:2379”
ETCD_NAME=“etcd-157”
ETCD_INITIAL_ADVERTISE_PEER_URLS=“http://192.168.59.157:2380”
ETCD_ADVERTISE_CLIENT_URLS=“http://localhost:2379,http://192.168.59.157:2379”
ETCD_INITIAL_CLUSTER=“etcd-156=http://192.168.59.156:2380,etcd-157=http://192.168.59.157:2380”
ETCD_INITIAL_CLUSTER_TOKEN=“etcd-cluster”
ETCD_INITIAL_CLUSTER_STATE=“new”
[root@etcd2 ~]#
启动etcd服务
- 这个玩意有启动顺序的,我们现在主节点上启动该服务
命令:systemctl start etcd
这时候是卡主的【是正常的,要让另外节点etcd服务都起来以后该节点才会启完】
- 然后我们去启动其他节点的etcd服务
命令:systemctl start etcd
[root@etcd2 ~]# systemctl start etcd
[root@etcd2 ~]#
- 这时候主节点的etcd服务才会启动完毕
[root@etcd1 ~]# systemctl start etcd
[root@etcd1 ~]#
- 上面所有节点服务都启动完毕以后,再所有节点执行加入开启启动的命令:
systemctl enable etcd
#注意主机名是3台的
[root@etcd1 ~]# systemctl enable etcd
[root@etcd1 ~]#
[root@etcd2 ~]# systemctl enable etcd
Created symlink from /etc/systemd/system/multi-user.target.wants/etcd.service to /usr/lib/systemd/system/etcd.service.
[root@etcd2 ~]#
至此,主备节点就配置完毕了
-
所谓新节点加入集群,就是一台新的主机,需要加入到已存在的集群里面
-
这个需要在版本2上完成,所以需要将版本切回2,否则会报member命令不存在。
命令:export ETCDCTL_API=2