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

0%

好好学K8S:K8S集群中变更数据存储路径

1. 需求描述

docker的默认工作目录是/var/lib/docker,会存放镜像文件、容器日志和写入到容器临时目录的文件等,默认挂载在系统盘。

kubelet的默认工作目录是/var/lib/kubelet,会存放volume文件(包括emptyDir volume)、plugin文件等,也是默认挂载在系统盘。

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

而系统盘一般都不会太大,因此最好把docker工作目录、kubelet工作目录和etcd数据目录更改到数据盘。

2. 操作思路

节点分为两类,master节点(多个节点)和worker节点(多个节点)。

单个master节点操作流程:
1、master-x禁止调度、驱逐pod
2、master-x操作修改docker工作目录、kubelet工作目录
3、master-x开放调度
4、master-x操作修改etcd数据目录

单个worker节点操作流程:
1、worker-x禁止调度、驱逐pod
2、worker-x操作修改docker工作目录、kubelet工作目录
3、worker-x开放调度

master节点挨个操作,worker节点挨个操作或者分批操作。

3. master节点操作

以master-0为例,方便进行描述。

3.1. 禁止调度&驱逐pod

1
kubectl drain master-0 --ignore-daemonsets

驱逐master-0节点上的pod,附带效果禁止调度。

3.2. 修改docker工作目录

详情参考 《Docker修改工作目录》

3.3. 修改kubelet工作目录

详情参考 《kubelet修改工作目录》

3.4. 开放调度

1
kubectl uncordon master-0

3.5. 单个节点修改etcd数据目录

详情参考 《etcd修改数据目录》

4. worker节点操作

以worker-0为例,方便进行描述。

4.1. 禁止调度&驱逐pod

kubectl drain worker-0 --ignore-daemonsets

驱逐worker-0节点上的pod,附带效果禁止调度。

4.2. 修改docker工作目录

详情参考 《Docker修改工作目录》

4.3. 修改kubelet工作目录

详情参考 《kubelet修改工作目录》

4.4. 开放调度

1
kubectl uncordon worker-0