K8S Docker数据目录迁移与扩容

背景

  • 当前docker所在默认路径/var/lib/docker,由于根分区磁盘空间不够,且未做lvm只能添加新磁盘作为docker存储路径,故需要做docker数据目录的迁移

修改docker数据目录配置

  • 使用这种方式需要修改docker的配置文件
# 查看当前docker数据路径
[root@k8s-master-1 ~]# ls /var/lib/docker
buildkit  containers  image  network  overlay2  plugins  runtimes  swarm  tmp  trust  volumes

# 停止docker与kubelet
[root@k8s-master-1 ~]# systemctl stop kubelet
[root@k8s-master-1 ~]# systemctl stop docker

# 迁移数据
[root@k8s-master-1 ~]# mv /var/lib/docker /data/

# 修改docker的配置文件
[root@k8s-master-1 ~]# cat /etc/docker/daemon.json 
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": ["https://ornb7jit.mirror.aliyuncs.com","https://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"],
  "default-ipc-mode": "shareable",
  "insecure-registries": ["192.168.0.10:30008"],
  "data-root": "/data/docker"  # 设置新的路径
}

# 启动docker与kubelet
[root@k8s-master-1 ~]# systemctl start docker && systemctl start kubelet

# 查看docker上是否还运行之前的容器
[root@k8s-master-1 ~]# docker ps -qa | head -n 3
3581f7749158
cf039980fcc6
77f93ff2e2cd

软链接存储路径

  • 由于docker在运行期间会产生新的数据,为保证数据一致性,需要停止docker服务后才能进行数据迁移
  • 使用软链接的方式可以不用修改docker的配置文件
# 查看当前docker数据路径
[root@k8s-master-1 ~]# ls /var/lib/docker
buildkit  containers  image  network  overlay2  plugins  runtimes  swarm  tmp  trust  volumes

# 停止docker与kubelet
[root@k8s-master-1 ~]# systemctl stop kubelet
[root@k8s-master-1 ~]# systemctl stop docker

# 迁移数据
[root@k8s-master-1 ~]# mv /var/lib/docker /data/

# 创建软链接到之前的数据目录
[root@k8s-master-1 ~]# ln -s /data/docker/ /var/lib/docker

# 启动docker与kubelet
[root@k8s-master-1 ~]# systemctl start docker && systemctl start kubelet

# 查看docker上是否还运行之前的容器
[root@k8s-master-1 ~]# docker ps -qa | head -n 3
2d4cc97df7be
e7dcdb6ab4a1
b80f152c1ee8
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐