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

目的

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

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

关键注意事项

⚠ 业务影响:节点驱逐(drain)会导致 Pod 迁移,可能影响业务可用性,建议在低峰期执行。 ⚠ 依赖顺序:必须按顺序停止 kubelet 和 containerd,修改挂载点后正确恢复服务。 ⚠ 数据安全:重启节点后,将原来的/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-proxy、calico-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
  • 确认挂载点及软链接正确。
相关推荐
螺蛳粉 螺蛳粉4 小时前
第 02 篇:镜像分层与 containerd 2.x 实战:SystemdCgroup 与 pause 镜像配置踩坑(底座认知 02)
docker·云原生·容器·kubernetes·etcd·containerd·kube-apiserver
小白的码BUG之路8 小时前
K8s -- 搭建过程中经常遇到的问题
云原生·容器·kubernetes
螺蛳粉 螺蛳粉8 小时前
第 03 篇:为什么 K8s 的最小调度单元是 Pod 而不是容器:pause 容器与边车模式(底座认知 03)
docker·云原生·容器·kubernetes·etcd·运维排障·kube-apiserver
艾伦_耶格宇9 小时前
【kubernetes - 1.28版本】-9 K8S-dashbord可视化界面
云原生·容器·kubernetes
无人生还别怕1 天前
如何搭建k8s服务(containerd部署)
linux·云原生·容器·kubernetes·openanolisos
fb_123451 天前
从探针到权限:一篇吃透 Kubernetes 健康检查、RBAC 认证授权与 Dashboard 可视化管理
云原生·容器·kubernetes
mengge.cloud1 天前
10-28-Kubernetes健康检查认证授权与Dashboard
云原生·容器·kubernetes
SatanII1 天前
Kubernetes 认证与授权详解:守护集群API访问安全
安全·贪心算法·kubernetes
闲云野鹤在人间1 天前
头秃修炼手册:StorageClass+StatefulSet+ETCD 全套渡劫笔记
linux·数据库·笔记·云原生·kubernetes·etcd
艾伦_耶格宇1 天前
【kubernetes - 1.28版本】-7 K8S命令
云原生·容器·kubernetes