温馨提示×

CentOS Overlay配置与虚拟化技术

小樊
47
2026-01-02 08:09:40
栏目: 云计算

CentOS 中的 Overlay 与虚拟化全景指南

一、概念与适用场景

  • 在容器与云原生语境中,Overlay 通常指跨主机的覆盖网络,用于在 L3 底层网络之上承载 L2 容器网络。常见实现包括 Docker Swarm 的 overlay 网络OVN 的 Geneve/VXLAN 隧道。在存储语境中,OverlayFS(如 overlay2) 是 Docker 的联合文件系统存储驱动,用于分层镜像与容器可写层管理。两类“Overlay”目标不同、配置方式也不同,需先明确场景再实施。

二、容器 Overlay 网络配置(Docker Swarm)

  • 适用目标:多主机容器跨网络通信、服务发现与负载均衡。
  • 前提与网络:
    • 节点间 UDP 4789(VXLAN)或 TCP 6081(Geneve)可达;管理面 TCP 2377、节点通信 TCP/UDP 7946、gRPC TCP 2379-2380 放通(按实际安全策略最小化放通)。
    • 建议关闭或正确配置 firewalld/iptables,避免阻断 overlay 隧道与控制面流量。
  • 快速步骤(示例):
    1. 初始化 Swarm(在管理节点)
      • docker swarm init --advertise-addr <管理节点IP>
    2. 其他节点加入
      • docker swarm join --token <管理节点IP>:2377
    3. 创建可附加的 overlay 网络(便于普通容器直连)
      • docker network create -d overlay --attachable my-overlay
    4. 验证
      • docker node ls
      • docker network inspect my-overlay
      • 在两端分别启动容器并互 ping 或通过服务名访问
  • 提示:生产环境建议启用 加密(–opt encrypted)、合理设置 子网MTU,避免与物理网络 MTU 1500 冲突导致分片与性能劣化。

三、容器 Overlay 网络配置(OVN/OVS 方案)

  • 适用目标:需要更强网络策略、ACL、分布式网关、与 OpenStack/K8s 深度集成的场景。
  • 核心思路:以 OVN(Northbound/Southbound DB) 控制面配合 OVS 数据面,隧道封装常用 Geneve(亦可 VXLAN/GRE),在 CentOS 7/8 上以 RPM 部署 OVS/OVN 组件。
  • 快速步骤(示例要点):
    1. 安装 OVS/OVN(示例仓库与版本按发行版与需求选择)
      • yum install -y openvswitch openvswitch-ovn-central openvswitch-ovn-host
    2. 启动服务
      • systemctl enable --now ovn-northd ovn-controller openvswitch
    3. 配置 OVN 控制面与隧道封装
      • ovn-nbctl set-connection ptcp:6641:
      • ovn-sbctl set-connection ptcp:6642:
      • 各节点设置隧道封装与本地 VTEP IP:
        • ovs-vsctl set open . external-ids:ovn-remote=tcp::6642
        • ovs-vsctl set open . external-ids:ovn-encap-type=geneve
        • ovs-vsctl set open . external-ids:ovn-encap-ip=
    4. 按需创建逻辑网络、端口与 ACL,并通过 ovn-nbctl/ovn-sbctl 校验
  • 提示:如启用 RDMA/加速驱动,需确保 libibverbs 等依赖已安装,避免 OVS/DPDK/硬件卸载初始化失败。

四、系统虚拟化技术选型与起步(KVM/Xen)

  • 选型建议:
    • KVM/QEMU:Linux 内核原生 全虚拟化,依赖 Intel VT-x/AMD-V,性能接近原生,适合生产通用虚拟机场景。
    • Xen:支持 半虚拟化(PV)硬件辅助全虚拟化(HVM),需 dom0 管理域,适合特定历史与性能优化场景。
  • 快速起步(KVM,示例):
    1. 检查硬件虚拟化支持
      • egrep -c ‘(vmx|svm)’ /proc/cpuinfo
    2. 安装虚拟化组件
      • yum install -y qemu-kvm libvirt libvirt-python virt-install virt-manager
    3. 启动与开机自启
      • systemctl enable --now libvirtd
    4. 创建虚拟机(示例)
      • virt-install --name vm1 --ram 2048 --vcpus 2
        –disk path=/var/lib/libvirt/images/vm1.qcow2,size=10
        –os-type linux --os-variant rhel7
        –network bridge=br0 --graphics none
        –console pty,target_type=serial
        –location <安装介质URL>
        –extra-args ‘console=ttyS0,115200n8 serial’
  • 提示:桥接网络可用 Linux BridgeOVS;如需 GPU/高性能网络,进一步配置 VF/DPDK/vhost-user 等。

五、Docker 存储 OverlayFS(overlay2)运维要点

  • 适用目标:理解 /var/lib/docker/overlay2 增长来源、日常清理与风险规避。
  • 常见问题与处理:
    • 现象:磁盘被 overlay2 占满,容器/镜像异常。
    • 排查:
      • 查看空间:df -h;定位目录:du -sh /var/lib/docker/overlay2
      • 清理无用数据:docker system prune -af(谨慎,会删除停止容器、悬挂镜像与构建缓存)
      • 按项目/租户规范镜像与容器生命周期,避免无限制构建与拉取
    • 预防:
      • 设置镜像与日志大小上限(daemon.json 或 systemd drop-in)
      • 定期审计大镜像/无用层,建立清理窗口
      • 监控 /var/lib/docker 使用率并设置告警
  • 提示:勿手动删除 /var/lib/docker/overlay2 下文件,可能导致镜像/容器损坏;优先使用 Docker 自带清理与 GC 机制。

0