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
  • 确认挂载点及软链接正确。
相关推荐
某某10 小时前
DashBoard安装使用
大数据·开发语言·kubernetes
youliroam13 小时前
Ubuntu24.04.2 + kubectl1.33.1 + containerdv1.7.27 + calicov3.30.0
ubuntu·kubernetes·kubesphere·containerd·calico
ascarl20101 天前
k8s更新证书
云原生·容器·kubernetes
xyhshen1 天前
麒麟v10+信创x86处理器离线搭建k8s集群完整过程
docker·容器·kubernetes·国产操作系统
编码如写诗1 天前
【信创-k8s】海光/兆芯+银河麒麟V10离线部署k8s1.31.8+kubesphere4.1.3
云原生·容器·kubernetes
MonkeyKing_sunyuhua1 天前
Kubernetes资源申请沾满但是实际的资源占用并不多,是怎么回事?
云原生·容器·kubernetes
ytttr8731 天前
k8s的出现解决了java并发编程胡问题了
java·容器·kubernetes
qq_312920111 天前
K8S上使用helm部署 Prometheus + Grafana
kubernetes·grafana·prometheus
liux35281 天前
从 Docker 到 Containerd:Kubernetes 容器运行时迁移实战指南
docker·容器·kubernetes
swbook2 天前
CentOS8.3+Kubernetes1.32.5+Docker28.2.2高可用集群二进制部署
linux·运维·kubernetes