温馨提示×

怎样更新CentOS Overlay到最新版本

小樊
42
2025-12-11 18:20:30
栏目: 智能运维

先明确你所说的 Overlay 类型

  • Overlay 内核模块:指 Linux 的联合文件系统内核模块(用于容器/挂载等)。
  • 容器网络的 Overlay 驱动:如 Docker 的 overlay 网络或 Kubernetes 的 overlay 网络插件(Calico、Flannel 等)。
  • 容器运行时的 OverlayFS 存储驱动:如 Docker 使用 overlay/overlay2 作为存储后端。
  • 手动挂载的 Overlay 文件系统:/etc/fstab 或 mount -t overlay 的自定义挂载。

通用安全准备

  • 备份关键数据与配置,选择业务低峰时段执行,准备回滚方案。
  • 确认系统版本与内核:cat /etc/redhat-release;uname -r。
  • 对于内核/模块相关变更,建议先在测试环境验证,并保留一台回滚机器。

按场景执行更新

  • 内核模块 Overlay(系统级)

    • 更新内核与相关包:CentOS 7 用 sudo yum update kernel;CentOS 8/Stream 用 sudo dnf update kernel。
    • 重启:sudo reboot。
    • 验证:uname -r 与 lsmod | grep overlay 查看模块是否加载。
    • 注意:OverlayFS 在 Linux 内核 3.18 及以上引入,过旧内核可能不支持或存在兼容性问题。
  • 容器网络的 Overlay 驱动(Docker/Kubernetes)

    • 更新 Docker(示例为 CentOS 7):
      • 停止服务:sudo systemctl stop docker
      • 按需移除旧包并安装新版本(以官方仓库为准)
      • 启动服务:sudo systemctl start docker
    • 如使用 Kubernetes,升级 kubeadm/kubelet/kubectl:sudo yum update -y kubeadm kubectl kubelet,必要时按官方流程重新初始化或升级集群组件。
    • 如使用 Calico/Flannel 等插件,同步升级对应组件:sudo yum update -y calico 或相应网络插件包。
  • 容器运行时的 OverlayFS 存储驱动(Docker)

    • 升级 Docker 到较新版本(overlay2 在较新版本中更成熟,优先使用 overlay2)。
    • 修改 /etc/docker/daemon.json(如存在)确保使用 “storage-driver”: “overlay2”。
    • 重启 Docker:sudo systemctl restart docker
    • 验证:docker info | grep -i “storage driver” 应显示 overlay2。
  • 手动挂载的 Overlay 文件系统

    • 确保底层 lowerdir 内容已更新(更新基础镜像或拷贝新文件到 lowerdir)。
    • 重新挂载:
      • 卸载:sudo umount /path/to/mountpoint
      • 挂载:sudo mount -t overlay overlay -o lowerdir=/path/to/lowerdir,upperdir=/path/to/upperdir,workdir=/path/to/workdir /path/to/mountpoint
    • 验证:ls /path/to/mountpoint 检查内容是否为最新。

验证与回滚

  • 验证
    • 内核/模块:uname -r;lsmod | grep overlay
    • Docker:docker info | grep -i “storage driver|Server Version”
    • 网络/集群:docker network ls;kubectl get nodes(或 calicoctl get nodes)
    • 手动挂载:ls /path/to/mountpoint 与 mount | grep overlay
  • 回滚
    • 内核:重启选择旧内核(GRUB),或 yum/dnf history undo 回滚最近事务。
    • Docker/Kubernetes:使用已保存的旧版本包或镜像,按官方步骤回滚组件版本并重启服务。
    • 手动挂载:使用之前的挂载命令或备份数据恢复。

常见排错要点

  • 内核过旧导致不支持或异常:uname -r 确认版本,必要时先升级内核再启用 Overlay。
  • 配置错误:检查 /etc/fstab 或启动脚本中的 lowerdir/upperdir/workdir 路径、权限与存在性;使用 journalctl -xe 或 /var/log/messages 查看详细错误。
  • 容器网络异常:确认 Docker/Kubernetes 与网络插件版本匹配,必要时回滚到已知可用的版本组合。

0