1)运行的容器数据(包括容器内应用的日志);
2)镜像数据。
Docker的数据通过联合文件系统的方式存储到磁盘上。Docker默认的容器和镜像数据存储在/var/lib/docker目录下。您可以通过du命令查看这个目录目前占用的磁盘大小。
# du -h --max-depth=0 /var/lib/docker 7.9G /var/lib/docker
默认的,docker数据目录存放于系统盘。当您的应用不断写日志,或者容器和镜像数量不断增加时,系统盘使用量会不断增加,当docker目录所在磁盘使用超过一定阈值时会出现Pod驱逐等异常现在,导致应用不可用,所以需要通过增加数据盘的方式对Docker的数据目录进行扩容。
根据ECS是否已经添加到集群中,可以采取不同的方案使用数据盘。
添加该节点到集群,添加节点时勾选“使用数据盘”选项,集群会自动将最后一块数据盘进行格式化和分区,用于存放docker目录。
注意,如果是想重新添加到集群,操作时,请先排空节点再从集群移除节点。
排空节点请参考:点击查看。
不需要重新添加该节点,可以将ECS上已经存在的docker目录迁移至新的数据盘。
1)创建新数据盘并挂载到ECS;
2)磁盘格式化和分区;
3)移动docker目录到新的磁盘。
① 先排空节点,点击查看。
② 停止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 start和service 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
。