一个计算机技术爱好者与学习者

0%

etcd修改数据目录

1. 需求描述

使用kubeadm安装的etcd,默认数据目录是/var/lib/etcd,默认挂载在系统盘。

而系统盘一般都不会太大,因此最好把etcd的数据目录更改到数据盘。

本文中,我们会把etcd的数据目录从/var/lib/etcd改到/data/etcd,其中/data目录挂载了数据盘。

2. 思路

想到两个方法:

  • 修改配置法:拷贝数据到新目录,修改工作目录配置到新目录。
  • 软链法:拷贝数据到新目录,使用新目录的软链替换原来的工作目录。不推荐,不知道有没有什么隐藏坑。

etcd是集群,为了保证etcd服务可用,需要挨个节点停服操作,完成一个节点再进行下一个。

3. 修改配置法

1、停止etcd

1
2
3
4
sudo docker ps | grep etcd
sudo mv /etc/kubernetes/manifests/etcd.yaml ~/
sudo docker ps | grep etcd
sudo etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/peer.crt --key=/etc/kubernetes/pki/etcd/peer.key --endpoints="https://192.168.56.101:2379,https://192.168.56.102:2379,https://192.168.56.103:2379" endpoint health

2、修改etcd数据目录
编辑~/etcd.yaml,etcd-data的path从/var/lib/etcd改为/data/etcd

1
2
3
4
5
6
7
8
9
10
spec:
volumes:
- hostPath:
path: /etc/kubernetes/pki/etcd
type: DirectoryOrCreate
name: etcd-certs
- hostPath:
path: /data/etcd
type: DirectoryOrCreate
name: etcd-data

3、拷贝数据

1
2
3
sudo mkdir -p /data/etcd
sudo cp -rf /var/lib/etcd/. /data/etcd
sudo mv /var/lib/etcd /var/lib/etcd.old

4、启动etcd&查看etcd状态

1
2
3
4
5
6
sudo mv ~/etcd.yaml /etc/kubernetes/manifests/
sudo docker ps | grep etcd
sudo etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/peer.crt --key=/etc/kubernetes/pki/etcd/peer.key \
--endpoints="https://192.168.56.101:2379,https://192.168.56.102:2379,https://192.168.56.103:2379" \
endpoint health

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
2
3
etcd:
local:
dataDir: /data/etcd
  • 本文作者: 好好学习的郝
  • 原文链接: https://www.voidking.com/dev-etcd-data-dir/
  • 版权声明: 本文采用 BY-NC-SA 许可协议,转载请注明出处!源站会即时更新知识点并修正错误,欢迎访问~
  • 微信公众号同步更新,欢迎关注~