在kubernetes集群里面,我们知道使用的所有kubectl命令都是与apiserver打交道的,apiserver会把每次操作的记录都统一存储在etcd上,因此这里的话,我们对于etcd来说,他里面保存的就是元数据信息,只要etcd里面的元数据信息有保存,那么即使我们操作错了kubernetes集群的内容,都可以使用etcd源数据信息进行还原,所以在这里我们介绍下etcd的备份和还原。这里我们分为两部分来介绍,本文主要介绍的是etcd备份。
这里备份的话,其实比较简单,主要是使用etcdctl工具,这个工具只要安装了etcd的集群,都会有这个工具,所以对于etcdctl工具的安装就暂时不做多的介绍了,这里我们介绍下直接使用etcdctl命令进行备份,这里整体的备份命令公式是:
export ETCDCTL_API=3 etcdctl --endpoints=${etcd_https_url} --cacert=${path_ca.crt/pem} --cert=${etcd_client_ssl_cert.crt/pem} --key=${etcd_client_ssl_key.key/pem} snapshot save ${backup_file_name}
这里我们剖析下具体的语法:
1)endpoints
这里主要是etcd的https访问的url,带有端口,例如:https://192.168.31.218:2379。不管是集群或者单机,我们一般写一个就可以了。
2)cacert
这里主要是ca相关的证书,一般的格式是crt格式或者pem格式。这里需要写完整的路径,例如:/etc/kubernetes/pki/ca.crt
3)cert
这里主要是服务端的ssh相关的证书,一般的格式一般的格式是crt格式或者pem格式。这里需要写完整的路径,例如:/etc/kubernetes/pki/etcd/server.crt
4)key
这里主要是服务端ssh相关的key,一般的格式一般的格式是key格式或者pem格式。这里需要写完整的路径,例如:/etc/kubernetes/pki/etcd/server.key
5)snapshot
这个主要是etcdctl的命令参数
6)save
save代表的是保存到本地
备注说明:
1、一般传统的kubernetes安装的etcd,主要是以pod的方式进行启动的,此时上面对应的证书路径是:
ca证书的路径在:/etc/kubernetes/pki/目录下,全路径是:/etc/kubernetes/pki/ca.crt cert证书的路径在:/etc/kubernetes/pki/etcd目录下,全路径是:/etc/kubernetes/pki/etcd/server.crt key证书的路径在:/etc/kubernetes/pki/etcd目录下,全路径是:/etc/kubernetes/pki/etcd/server.key
2、如果其他方式安装的,一般这时候etcd主要是以二进制的方式进行安装的,此时这几个证书对应的证书路径是:
ca证书的路径在:/etc/ssl/etcd/ssl目录下,全路径是:/etc/ssl/etcd/ssl/ca.pem cert证书的路径在:etc/ssl/etcd/ssl/目录下,全路径是:/etc/ssl/etcd/ssl/admin-${name}.pem key证书的路径在:etc/ssl/etcd/ssl/目录下,全路径是:/etc/ssl/etcd/ssl//admin-${name}-key.pem
例如我们这里使用kuboard安装的kubernetes集群,他得etcd主要是二进制安装的:
所以它的证书就在/etc/ssl/etcd/ssl目录下:
所以这里我们的备份语句如下:
etcdctl --endpoints=https://192.168.31.218:2379 --cacert=/etc/ssl/etcd/ssl/ca.pem --cert=/etc/ssl/etcd/ssl/admin-school.pem --key=/etc/ssl/etcd/ssl/admin-school-key.pem snapshot save snap-etcd.db
然后就可以看到备份成功了。
备份完成后就可以看到备份好的文件了:
备份完毕之后我们可以使用如下的命令来验证下备份文件:
ETCDCTL_API=3 etcdctl --write-out=table snapshot status ${backup_filename}
示例图如下:
以上就是备份kubernetes集群中etcd元数据信息的案例。
还没有评论,来说两句吧...