当前位置: 首页 > news >正文

数据迁移-kubernetes使用openebs场景

说明

kubernetes使用openebs时,若使用kubekey或者其他工具部署,存在未配置指定目录的情况,默认数据存放在/var/openebs/local,当POD使用pvc和pv时,持久存储的数据会打爆根目录,导致work node异常。可参考本方法进行数据迁移。

可以先参考基础配置,检查集群是否存在其他需要调整的地方,https://blog.csdn.net/2502_92174648/article/details/162232663?spm=1011.2415.3001.5331
特殊说明:本文假设所有work node都配置了openebs,且所有work node都出现了存储爆满的风险。
注意:openebs的数据存储配置仅用于work node,不会用于master node。所以仅配置work node,定制集群除外。

准备磁盘

因先前已有大容量磁盘,且挂载目录/data,空间足够。此处不做展示。

关停组件

在master node1 操作

# 停止pvc的功能kubectl scale deployment openebs-localpv-provisioner-nkube-system--replicas=0kubectl get pods-nkube-system|grepopenebs-localpv-provisionermkdir/data/backup# 备份storageclass配置文件kubectl get sclocal-oyaml>/data/backup/sc-local-backup.yaml

在所有work node操作,

# 关组件systemctl stop kubelet

备份数据

在所有work node操作,

mkdir/data/backup# 同步数据到新位置,特殊注意,若遇到warring提示,务必再次同步一次。rsync-avz/var/openebs/ /data/openebs# 将旧数据备份到新位置mv/var/openebs /data/backup/openebs

调整配置

在所有work node操作。

# 配置软链接,规避配置缺失导致的找不到数据问题ln-s/data/openebs /var/openebsls-l/var/openebs# 启动组件systemctl start kubelet

在master node1操作
注意,必须在所有work node完成前置操作,才能进行此处,

# 修改storageclass的配置kubectl edit sclocal# 将/var/openebs/local改为/data/openebs/local# 开启pvc调度功能kubectl scale deployment openebs-localpv-provisioner-nkube-system--replicas=1# 确认POD存在kubectl get pods-nkube-system|grepopenebs-localpv-provisioner

测试验证

测试确认数据调整后的存储可以正常使用。

确认node都正常。在master node1操作

kubectl getnode-A-owide

确认POD都正常,访问有数据持久化配置的POD,查看数据是否还在。在master node1操作

kubectl get pode-A-owide

检查storageclass。在master node1操作

kubectl get storageclass-A# 注意,当前环境只有local,以环境真实情况为准kubectl get storageclasslocal-oyaml kubectl describe storageclasslocal

确认磁盘空间状态。在所有work node操作,务必记录。

df-h/datadf-h/var

创建测试专用namespace。在master node1操作

kubectl create ns storage-test

创建资源文件local-storage-test.yaml。在master node1操作,注意,我的环境storageclass名字是local,你应当查询改为你的。我的环境work node名字是work1,2,3 ,你应当把kubernetes.io/hostname:部分改为你的环境使用的。

# local-storage-test-fixed.yamlapiVersion: v1 kind: PersistentVolumeClaim metadata: name: test-pvc-1 namespace: storage-test spec: accessModes: - ReadWriteOnce storageClassName:localresources: requests: storage: 12Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: test-pvc-2 namespace: storage-test spec: accessModes: - ReadWriteOnce storageClassName:localresources: requests: storage: 12Gi --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: test-pvc-3 namespace: storage-test spec: accessModes: - ReadWriteOnce storageClassName:localresources: requests: storage: 12Gi --- apiVersion: v1 kind: Pod metadata: name: test-pod-1 namespace: storage-test spec: nodeSelector: kubernetes.io/hostname: work1 containers: - name: writer image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/busybox:1.38.0 command:["sleep","infinity"]volumeMounts: - name:>["sleep","infinity"]volumeMounts: - name:>["sleep","infinity"]volumeMounts: - name:>kubectl apply-flocal-storage-test.yaml

查看pod

kubectl get all-nstorage-test-owide

查看pvc。在master node1操作

kubectl get pvc-nstorage-test

查看pod。在master node1操作

kubectl get pod-nstorage-test-owide

给三个pod写入数据。在master node1操作

foriin123;doecho"开始向 test-pod-$i写入10GB数据..."kubectlexec-nstorage-test test-pod-$i--ddif=/dev/zeroof=/data/test-10g.binbs=1Mcount=10240&donewaitecho"所有数据写入完成"

验证写入结果。在master node1操作

foriin123;doecho"===== test-pod-$i数据校验 ====="kubectlexec-nstorage-test test-pod-$i--ls-lh/data/test-10g.bin kubectlexec-nstorage-test test-pod-$i--du-sh/data/test-10g.bindone

确认磁盘空间状态。在所有要测试的work node操作,务必记录。

df-h/datadf-h/var

预期结果,/data数据增加,/var无变化。
清理测试资源。在master node1操作

kubectl delete-flocal-storage-test.yaml kubectl delete ns storage-test kubectl get pvc-A|greptestkubectl getpv|greppvc

再次查看,确认10GB空间已被释放。确认磁盘空间状态。在所有要测试的work node操作,务必记录。

df-h/datadf-h/var
http://www.jsqmd.com/news/1107881/

相关文章:

  • 现代数据架构的7个关键技术
  • 5分钟免费教程:用Deep3D将普通2D视频变成立体3D电影
  • IntelliJ IDEA异常断点设置全攻略(含Java 17+模块化环境避坑清单):从“不触发”到“精准捕获”的7步标准化流程
  • [Texture2DAsset节点]原理解析与实际应用
  • 一天一个Python库:soupsieve - CSS 选择器在 Beautiful Soup 中的力量
  • WinForms DataGridView 的 AutoGenerateColumns 为什么不建议写在 Designer.cs 中?
  • 嵌入式双模信号转换系统设计与优化实践
  • 从零到生产就绪:VMware虚拟机部署k3s集群的7个关键配置项(含cgroup v2兼容性验证清单)
  • Acwing基础课第800题-简单-数组元素的目标和
  • [Texture2DArrayAsset节点]原理解析与实际应用
  • 域控迁移失败率下降73%!VMware+Windows Server 2022域环境搭建全流程,含自动化脚本交付包
  • Meta Learners:工业级因果效应估计的模块化实践框架
  • M2.7开源解析:轻量级MoE模型的工业级推理与部署实践
  • P3 · 宠物疾病三元组推理系统
  • 判断android版本
  • Honey Select 2完整汉化与去码补丁:10分钟打造终极中文游戏体验
  • 终极指南:如何用Python脚本实现百度网盘高速下载?完整实战教程
  • 一款超级好用免费的Mac 状态栏收纳Tools!
  • TC78H653FTG驱动直流有刷电机的专业方案与优化
  • 抖音无水印下载完整指南:开源工具实现高效批量下载
  • 怎样高效使用抖音批量下载工具:面向新手的5分钟快速上手指南
  • 传奇 3 光通版手游官网下载:7 月 7 日 13:00 全新大区【太初】正式开服
  • ScratchJr桌面版:5-7岁儿童编程启蒙的终极免费指南
  • ⚡SimpleDAO 企业实战教程(08)脱敏 + 审计扩展 · 框架不设限
  • 终极exif-js使用指南:7步掌握图片元数据提取技术
  • 同一个server启动第二个ongrid
  • YOLOv10模型改进-卷积层改进-第27篇:YOLOv10改进策略【卷积层】| 可变形卷积改进方案
  • 如何让游戏机变身全能B站客户端:wiliwili跨平台追番终极指南
  • YOLOv10模型改进-卷积层改进-第22篇:YOLOv10改进策略【卷积层】| MLP-Mixer卷积改进方案
  • 为什么你的docker-compose up总在VMware里超时?——基于ESXi 8.0u2内核日志的17项网络栈诊断清单