k8s集群etcd数据库常用命令

前言

k8s集群中使用etcd数据库作为数据后端数据,所以熟知一些关于etcd数据的使用命令还是很有必要的。

安装etcdctl客户端工具

如果你的k8s集群时使用kubeadmin安装的,那么会有一个etcd的pod,如下:

#查看etcd的pod在哪个节点上
[root@master ~]# kubectl  get pods etcd-master -n kube-system -owide
NAME          READY   STATUS    RESTARTS      AGE   IP               NODE     NOMINATED NODE   READINESS GATES
etcd-master   1/1     Running   3 (20d ago)   23d   192.168.44.130   master   <none>           <none>
[root@master ~]# 
#etcd的pod里面有一个etcdctl客户端命令行工具,我们只要把这个工具拷贝到我们的宿主机上就可以使用了

[root@master ~]# docker ps -a						#我们使用docker进行复制,先查看etcd的容器
[root@master ~]# docker cp 010a60a7119b:/usr/local/bin/etcdctl /usr/bin/			#复制etcd的容器的etcdctl命令到宿主机

为etcdctl工具创建别名

使用etcdctl命令会有一串很长的用户验证秘钥,为了简化,可以为它设置一个别名,如下:

alias etcdctl='etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key'
#把上面这串别名复制到 /etc/profile 文件里,然后重新登录shell终端即可

etcdctl常用命令

[root@master ~]# etcdctl --help							#查看命令帮助
[root@master ~]# etcdctl member list -w table			#列出etcd集群一共有几个节点
[root@master ~]# etcdctl endpoint health -w table		#查看etcd数据库是否健康,-w table 表示输出table的格式显示
[root@master ~]# etcdctl endpoint status -w table		#查看各节点状态,可以看到版本号,数据库大小等信息


[root@master etcd]# etcdctl put keys1 124
OK
[root@master etcd]# etcdctl get keys1
keys1
124
[root@master etcd]# etcdctl get / --prefix=true --keys-only     #列出整个根目录的keys

[root@master etcd]#  etcdctl endpoint status  -w table		#查看etcd数据的版本大小

etcd数据库做定时任务备份

[root@master ~]# mkdir /root/etcd_backup -p			#创建一个目录用于存放备份数据

#编写备份脚本,直接使用/usr/bin/etcdctl命令,指定认证的秘钥,snapshot save是保存快照,后面是备份文件和日志文件(这里不在使用别名,使
# 用别名发现有点问题)
[root@master ~]# vim etcd_backup_script.sh			
#!/bin/bash
/usr/bin/etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/healthcheck-client.crt --key=/etc/kubernetes/pki/etcd/healthcheck-client.key  snapshot save /root/etcd_backup/'hostname'-etcd_`date +%Y%m%d%H%M`.db >& /root/etcd_backup/'hostname'-etcd_`date +%Y%m%d%H%M`.log
[root@master ~]# chmod u+x etcd_backup_script.sh			#授可行性权限

#添加定时计划任务
[root@master ~]# crontab -e
00 00 * * * /bin/bash /root/etcd_backup/etcd_backup_script.sh	#每天凌晨0点备份一次

etcd数据库恢复

1、停止etcd、apiserver
2、移走etcd目录数据
[root@master ~]# mv /var/lib/etcd/ /tmp/
3、恢复快照
etcdctl snapshot restore hostname-etcd_202208261834.db --data-dir=/var/lib/etcd/

你可能感兴趣的:(kubernetes,kubernetes,数据库,etcd)