一、介绍
etcd用为kubenretes的数据库,是一个k/v系统,用于存储kubernetes当中的所有的数据
二、下载etcd-v3.5.1-linux-amd64.tar.gz
链接:https://pan.baidu.com/s/1nzORZMEPGHcoePxzozZrUA?pwd=e8nu
提取码:e8nu
解压后,会得到两个二进制文件:
* etcd: 服务端进程
* etcdctl: 客户端命令
三、常用参数
#参数
etcd:
--name: 指定etcd的启动名称
--data-dir: 指定etcd的数据存放目录
--listen-client-urls: 指定etcd的监听地址
--listen-peer-urls: 如果以集群的方式部署etcd,则与集群当中对等节点通信所使用的地址
四、设置开机自启
#添加etcd启动文件:
[Unit]
Description=etcd: kubernetes k/v store
Documentation=https://github.com/etcd-io/etcd
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/bin/etcd --name cka-etcd --data-dir /var/lib/etcd --listen-client-urls http://127.0.0.1:2379,http://192.168.0.241:2379 --listen-peer-urls http://192.168.0.241:2380 --initial-advertise-peer-urls http://192.168.0.241:2380 --advertise-client-urls http://192.168.0.241:2379
Restart=always
StartLimitInterval=0
RestartSec=10
[Install]
WantedBy=multi-user.target
#启动etcd并设置为开机自启:
systemctl enable etcd --now
五、常用增删改查操作
#增:
etcdctl --endpoints http://192.168.0.241:2379 put /aa/bb/cc/dd yy
etcdctl --endpoints http://192.168.0.241:2379 put /aa/registry docker.io
etcdctl --endpoints http://192.168.0.241:2379 put /registry/namespaces/default default
#删:
etcdctl --endpoints http://192.168.0.241:2379 del /aa/bb/cc/dd
#改:
etcdctl --endpoints http://192.168.0.241:2379 put /aa/registry registry.cn-hangzhou.aliyuncs.com
#查:
etcdctl --endpoints http://192.168.0.241:2379 get / --prefix
etcdctl --endpoints http://192.168.0.241:2379 get / --prefix --keys-only
etcdctl --endpoints http://192.168.0.241:2379 get /aa/registry
六、备份及恢复
#etcd的备份与恢复
#备份:
etcdctl --endpoints http://192.168.0.241:2379 snapshot save ./cka-etcd.db
#查看备份文件状态:
etcdctl snapshot status ./cka-etcd.db
#恢复:
systemctl stop etcd
etcdctl snapshot restore ./cka-etcd.db
mv /var/lib/etcd /tmp/etcd.bak
mv default.etcd /var/lib/etcd
systemctl start etcd
etcdctl --endpoints http://192.168.0.241:2379 get / --prefix --keys-only
#注意事项:
#如果etcd不是以root的启动的,在恢复时,需要确保etcd的属主和属组
etcdctl --endpoints http://192.168.0.180:2379 get / --prefix --keys-only
etcdctl --endpoints https://192.168.0.180:2379 --cacert="./ca.crt" --cert="./server.crt" --key="./server.key" get / --prefix --keys-only