1. 需求描述
使用kubeadm安装的etcd,默认数据目录是/var/lib/etcd
,默认挂载在系统盘。
而系统盘一般都不会太大,因此最好把etcd的数据目录更改到数据盘。
本文中,我们会把etcd的数据目录从/var/lib/etcd
改到/data/etcd
,其中/data
目录挂载了数据盘。
2. 思路
想到两个方法:
- 修改配置法:拷贝数据到新目录,修改工作目录配置到新目录。
- 软链法:拷贝数据到新目录,使用新目录的软链替换原来的工作目录。不推荐,不知道有没有什么隐藏坑。
etcd是集群,为了保证etcd服务可用,需要挨个节点停服操作,完成一个节点再进行下一个。
3. 修改配置法
1、停止etcd
1 | sudo docker ps | grep etcd |
2、修改etcd数据目录
编辑~/etcd.yaml
,etcd-data的path从/var/lib/etcd
改为/data/etcd
1 | spec: |
3、拷贝数据
1 | sudo mkdir -p /data/etcd |
4、启动etcd&查看etcd状态
1 | sudo mv ~/etcd.yaml /etc/kubernetes/manifests/ |
4. 软链法
可以参考 《Docker修改工作目录》
5. kubeadm指定etcd数据目录
5.1. 修改etcd数据目录
使用kubeadm安装的etcd,etcd的数据目录是在kubeadm.conf文件中指定的。
根据kubeadm.conf中的配置,新加入的master节点上会生成/etc/kubernetes/manifests/etcd.yaml
文件,然后etcd就会作为static pod运行。
对于已经安装好的k8s集群,可以通过kubectl修改集群中kubeadm的配置
1 | kubectl edit cm kubeadm-config -n kube-system |
其中,etcd数据目录的修改方法为:etcd.local.dataDir 变量修改为 /data/etcd
修改之后,并不会马上生效,有新的master节点加入,才会使用这份新的etcd数据目录配置。
5.2. 初始化前指定etcd数据目录
在执行kubeadm init
之前,在kubeadm.conf文件中指定数据目录。
1 | etcd: |