步骤
- drain 掉节点上所有的 pod
1
| kubectl drain <node-name> --ignore-daemonsets --delete-local-data --force
|
- 停止 kubelet
- 停止所有容器
1 2
| docker stop $(docker ps -a -q) docker rm $(docker ps -a -q)
|
- 停止 docker daemon
- 创建 lvm
1 2 3 4 5
| pvcreate -y /dev/sdX1 vgcreate docker /dev/sdX1 lvcreate --wipesignatures y -n thinpool docker -l 95%VG lvcreate --wipesignatures y -n thinpoolmeta docker -l 1%VG lvconvert -y --zero n -c 512k --thinpool docker/thinpool --poolmetadata docker/thinpoolmeta
|
vim /etc/lvm/profile/docker-thinpool.profile
配置见附录
1 2
| lvchange --metadataprofile docker-thinpool docker/thinpool lvs -o+seg_monitor
|
vim /etc/docker/daemon.json
配置见附录
- 删除旧的 docker 相关文件
1
| rm -rf /var/lib/docker/*
|
- 启动 docker
- 查看是否成功转换
- 启动 kubelet
- uncordon 节点
1
| kubectl uncordon <node-name>
|
附录
/etc/lvm/profile/docker-thinpool.profile
1 2 3 4
| activation { thin_pool_autoextend_threshold=80 thin_pool_autoextend_percent=20 }
|
/etc/docker/daemon.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| { "log-level": "debug", "live-restore": true, "icc": false, "storage-driver": "devicemapper", "storage-opts": [ "dm.thinpooldev=/dev/mapper/docker-thinpool", "dm.use_deferred_removal=true", "dm.use_deferred_deletion=true", "dm.basesize=20G" ], "log-driver": "json-file", "log-opts": { "max-size": "512m", "max-file": "3" } }
|
参考
Use the Device Mapper storage driver