k8s平台本地数据迁移整改过程
作者:Zhu758
文章主要介绍了对k8s平台默认数据存储位置进行优化,将数据统一管理并存至指定目录和云磁盘的整个过程,包括新磁盘的创建挂载、配置更改生效、环境检查、清理旧环境等步骤,强调在集群所有节点上进行优化,并提醒配置更改生效后建议重启机器以确保变更生效
说明
新部署的k8s平台,采用默认配置,数据存放在默认目录,现需要统一管理数据,将数据存放在指定目录和云磁盘。
注意:
若k8s对接其他组件,例如openebs,需单独做数据迁移。
操作记录
前提条件,已准备好新的存储数据的云磁盘和目录。
创建新的云磁盘,挂载到主机,例如/dev/vdc。
mkdir /data mkfs.ext4 /dev/vdc mount /dev/vdc /data/ 修改文件, vim /etc/fstab # 追加配置 /dev/vdc /data ext4 defaults 0 0
检查环境,确保变更前后状态一致,
kubectl get node -A -o wide kubectl get pod -A -o wide
需注意runtime,
若用docker
vim /etc/docker/daemon.json # 新增配置 "data-root": "/data/docker"
同步数据到新目录,配置生效,
rsync -av /var/lib/docker/ /data/containerd/ systemctl daemon-reload systemctl start docker systemctl status docker
若使用containerd,
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"
配置生效
systemctl daemon-reload systemctl start containerd systemctl status containerd
配置kubelet数据
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
使配置生效
systemctl daemon-reload systemctl start kubelet systemctl start kubelet
检查环境,确保变更前后状态一致,
kubectl get node -A -o wide kubectl get pod -A -o wide
重启机器
推荐重启机器,确认配置依旧生效。
清理旧环境
当平台稳定允许三天后,且无数据异常,删除原数据存档的目录,释放占用的空间。
rm -rf /var/lib/containerd/ /var/lib/docker /var/lib/kubelet/
注意:
集群内所有节点都要操作。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
