k8s node 修改挂载点操作指导手册

目的

本手册提供 Kubernetes 节点挂载点修改的标准操作流程,适用于以下场景:

  • 调整存储架构:将容器运行时(containerd)和 kubelet 数据迁移至新的挂载点(如外接磁盘)。
  • 优化存储性能:通过外接磁盘扩展存储空间或提升 I/O 性能。
  • 运维标准化:确保操作过程安全,避免因配置错误导致节点不可用或数据丢失。

关键注意事项

⚠ 业务影响:节点驱逐(drain)会导致 Pod 迁移,可能影响业务可用性,建议在低峰期执行。 ⚠ 依赖顺序:必须按顺序停止 kubeletcontainerd,修改挂载点后正确恢复服务。 ⚠ 数据安全:重启节点后,将原来的/var/lib/kubelet/var/lib/containerd目录move到/var/lib/containers下 ⚠ 验证步骤:修改 /etc/fstab 后需验证挂载是否成功,避免重启后节点无法启动

驱逐节点上的 Pod(维护模式)

ini 复制代码
kubectl drain <Maintenance-node> --ignore-daemonsets --delete-local-data=true
  • --ignore-daemonsets:忽略 DaemonSet 管理的 Pod(如 kube-proxycalico-node)。

  • --delete-local-data:删除本地存储的 Pod(如 EmptyDir 数据)。

Kubelet containerd 设置开机不启动

bash 复制代码
systemctl disable kubelet containerd
  • 防止重启后服务自动启动,导致挂载点冲突。

重启节点

复制代码
reboot
  • 确保所有服务停止,避免文件被占用导致挂载失败。

修改挂载点

修改挂载点(如外接磁盘挂载至 /var/lib/containers

  • 检查外接磁盘是否识别(如 /dev/sdb):

    lsblk -f

  • 修改 /etc/fstab,添加新挂载点(示例):

bash 复制代码
/dev/sdb1  /var/lib/containers  ext4  defaults  0  0
  • 挂载并验证:
bash 复制代码
mount -a
df -h /var/lib/containers

迁移原来的数据

bash 复制代码
mv /var/lib/kubelet /var/lib/containers/kubelet
mv /var/lib/containerd /var/lib/containers/containerd

创建软链

bash 复制代码
ln -sv /var/lib/containers/kubelet /var/lib/kubelet
ln -sv /var/lib/containers/containerd /var/lib/containerd

启动 containerd 和 kubelet

sql 复制代码
systemctl start containerd kubelet
  • 检查服务状态:
lua 复制代码
systemctl status containerd kubelet

重新设置开机启动

bash 复制代码
systemctl enable kubelet containerd

确保节点重启后服务自动恢复。

验证步骤

  1. 检查 节点 状态
arduino 复制代码
kubectl get nodes
  • 确认节点状态恢复为 Ready
  1. 检查 Pod 是否重新调度
arduino 复制代码
kubectl get pods -o wide | grep <Maintenance-node>
  • 确保业务 Pod 已正常迁移回该节点。
  1. 验证存储是否生效
bash 复制代码
df -h /var/lib/containers
ls -l /var/lib/kubelet /var/lib/containerd
  • 确认挂载点及软链接正确。
相关推荐
engchina9 小时前
WSL Ubuntu で Kubernetes v1.34.2 + Docker 環境を構築する
ubuntu·docker·kubernetes
Gold Steps.13 小时前
OpenEBS — 云原生 CNS 高性能存储
云原生·kubernetes·存储
广州中轴线19 小时前
OpenStack on Kubernetes 生产部署实战(十三)
容器·kubernetes·openstack
切糕师学AI21 小时前
Helm Chart 是什么?
云原生·kubernetes·helm chart
广州中轴线1 天前
OpenStack on Kubernetes 生产部署实战(十七)
容器·kubernetes·openstack
陈桴浮海1 天前
Kustomize实战:从0到1实现K8s多环境配置管理与资源部署
云原生·容器·kubernetes
张小凡vip2 天前
Kubernetes--k8s中部署redis数据库服务
redis·kubernetes
Hello.Reader2 天前
Flink Kubernetes HA(高可用)实战原理、前置条件、配置项与数据保留机制
贪心算法·flink·kubernetes
ShiLiu_mtx2 天前
k8s - 7
云原生·容器·kubernetes
ghostwritten2 天前
春节前夕,运维的「年关」:用 Kubeowler 给集群做一次「年终体检」
运维·云原生·kubernetes