说明
新部署的k8s平台,采用默认配置,数据存放在默认目录,现需要统一管理数据,将数据存放在指定目录和云磁盘。
注意:若k8s对接其他组件,例如openebs,需单独做数据迁移。
操作记录
前提条件,已准备好新的存储数据的云磁盘和目录。
创建新的云磁盘,挂载到主机,例如/dev/vdc。
bash
mkdir /data
mkfs.ext4 /dev/vdc
mount /dev/vdc /data/
修改文件,
vim /etc/fstab
# 追加配置
/dev/vdc /data ext4 defaults 0 0
检查环境,确保变更前后状态一致,
bash
kubectl get node -A -o wide
kubectl get pod -A -o wide
需注意runtime,
若用docker
bash
vim /etc/docker/daemon.json
# 新增配置
"data-root": "/data/docker"
同步数据到新目录,配置生效,
bash
rsync -av /var/lib/docker/ /data/containerd/
systemctl daemon-reload
systemctl start docker
systemctl status docker
若使用containerd,
bash
cp /etc/containerd/config.toml /etc/containerd/config.toml.bak
systemctl stop containerd
rsync -av /var/lib/containerd/ /data/containerd/
vim /etc/containerd/config.toml
# 修改
root = "/data/containerd"
配置生效
bash
systemctl daemon-reload
systemctl start containerd
systemctl status containerd
配置kubelet数据
bash
mkdir /data/kubelet
systemctl stop kubelet
cp /etc/systemd/system/kubelet.service.d/10-kubeadm.conf /etc/systemd/system/kubelet.service.d/10-kubeadm.conf.backup
rsync -av /var/lib/kubelet/ /data/kubelet/
vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
# 在最后一行ExecStart=尾部追加配置
--root-dir=/data/kubelet
使配置生效
bash
systemctl daemon-reload
systemctl start kubelet
systemctl start kubelet
检查环境,确保变更前后状态一致,
bash
kubectl get node -A -o wide
kubectl get pod -A -o wide
重启机器
推荐重启机器,确认配置依旧生效。
清理旧环境
当平台稳定允许三天后,且无数据异常,删除原数据存档的目录,释放占用的空间。
bash
rm -rf /var/lib/containerd/ /var/lib/docker /var/lib/kubelet/
注意:集群内所有节点都要操作。