注意:以下文档只适用于TOP接口,请谨慎使用!

文档中心 > 聚石塔

节点Docker目录存储于数据盘

更新时间:2022/01/18 访问次数:732

Docker数据目录

  • 运行的容器数据(包括容器内应用的日志)
  • 镜像数据


Docker的数据通过联合文件系统的方式存储到磁盘上。Docker默认的容器和镜像数据存储在/var/lib/docker目录下。您可以通过du命令查看这个目录目前占用的磁盘大小。

# du -h --max-depth=0 /var/lib/docker
7.9G    /var/lib/docker

默认的,docker数据目录存放于系统盘。当您的应用不断写日志,或者容器和镜像数量不断增加时,系统盘使用量会不断增加,当docker目录所在磁盘使用超过一定阈值时会出现Pod驱逐等异常现在,导致应用不可用,所以需要通过增加数据盘的方式对Docker的数据目录进行扩容。


挂载数据盘方案

根据ECS是否已经添加到集群中,可以采取不同的方案使用数据盘

ECS还未添加至集群(或重新添加到集群)

添加该节点到集群,添加节点时勾选“使用数据盘”选项,集群会自动将最后一块数据盘进行格式化和分区,用于存放docker目录。

image.png

注意,如果是想重新添加到集群,操作时,请先排空节点再从集群移除节点

排空节点请参考:https://www.yuque.com/fczggw/wu7u0k/cxzzca#XQfx5


ECS已经添加到集群-更换docker数据盘

不需要重新添加该节点,可以将ECS上已经存在的docker目录迁移至新的数据盘

具体请参考: 新增数据盘

1)创建新数据盘并挂载到ECS

2)磁盘格式化和分区

3)移动docker目录到新的磁盘

  • 先排空节点,https://www.yuque.com/fczggw/wu7u0k/cxzzca#XQfx5
  • 停止Docker Daemon和kubelet,保证迁移时的数据完整
  • 移动Docker的目录到一个备份的目录。例如:mv /var/lib/docker /var/lib/docker_data
  • 然后把新的格式化好的磁盘挂载到/var/lib/docker/var/lib/kubelet目录。例如:
echo "/dev/xvdb1    /var/lib/container/     ext4    defaults        0 0" >>/etc/fstab
echo "/var/lib/container/kubelet /var/lib/kubelet none defaults,bind 0 0" >>/etc/fstab
echo "/var/lib/container/docker /var/lib/docker none defaults,bind 0 0" >>/etc/fstab


mkdir /var/lib/docker

mount -a
  • 把之前备份的Docker数据移动到新的磁盘上。例如:mv /var/lib/docker_data/* /var/lib/docker/

4)启动Docker Daemon和kubelet,命令分别是service docker startservice kubelet start

5)执行 docker ps命令,查看容器是否丢失

6)第2步如果排空了节点,请设置节点为“可调度”,之后才会有新的容器调度上来


验证

您可以在ECS节点上执行df命令,通过查看命令执行结果中/var/lib/docker是否成功挂载到/dev/vd*1来判断数据盘是否成功挂载。若挂载成功,则无需处理。若未成功挂载,您需要按照以下步骤完成挂载。

注意,此处/dev/vd*1可以是b,c,d,e等,取决于ECS上挂载了几块数据盘,比如ECS上只挂了一个数据盘,那么docker数据目录处于/dev/vdb1

FAQ

关于此文档暂时还没有FAQ
返回
顶部