在搭建k8s集群的时候,我们经常使用kubeadm,这个工具能帮助我们非常方便的快速搭建一个高可用的,线上可用的k8s集群。出于一些原因,我们经常需要etcd集群独立于k8s集群之外,有什么办法能想kubeadm一样快速搭建一个etcd集群呢?今天我们就来介绍一下etcdadm。
使用etcdadm非常简单。下载最新版到需要安装etcd的主机上即可。
常用命令
新建一个集群:
etcdadm init
常用参数:
--certs-dir: 指定etcd证书存放路径,默认为/etc/etcd/pki
--install-dir: 指定etcd命令存放路径,默认为/opt/bin/
--name: 设置节点名称,对应ETCD_NAME
--release-url: 指定下载地址,默认为https://github.com/coreos/etcd/releases/download 此地址会与version参数拼接成下载地址,格式为 https://github.com/coreos/etcd/releases/download/v{version}/etcd-v{version}-linux-amd64.tar.gz
--server-cert-extra-sans: 用于额外指定dns地址,默认包括127.0.0.1,本机地址,ETCD_NAME
--snapshot: 用快照数据初始化一个集群
--version: 指定启动etcd的版本,默认为3.3.8
向现有集群添加一个节点:
将一个节点加入到集群内。一个新节点加入集群前,必须手动将其他节点的ca证书复制到certs-dir下。
etcdadm join https://first-etcd-node-ip:2379
参数和上面的一致。
移除一个节点:
将一个节点从集群中删掉,并会自动清理相关文件
etcdadm reset
问题
etcd很方便,很好用,但是也有一些问题:
- 目前不支持配置额外的etcd 参数,要想增加参数,需要手动修改并维护所有主机上的etcd.env 文件。
- 和kubeadm一样,ca证书有效期为10年,其他证书有效期为1年,而且目前还不支持renew证书。
- 只支持使用root用户部署
总结
综上所述,我认为etcdadm 还只是非常适合在测试或者要求不高的场景下使用。真的需要在生产环境上部署高可用的etcd集群的话,还是推荐使用saltstack或者ansible 等工具部署,自由度更高一些。
网友评论