温馨提示×

Linux Overlay的部署步骤

小樊
55
2025-09-22 14:06:46
栏目: 智能运维

Linux Overlay主要分为文件系统(OverlayFS)和网络(Overlay Network)两类,以下是各自的部署步骤:

一、OverlayFS(文件系统层叠技术)部署步骤

OverlayFS是一种联合文件系统,可将多个目录合并为统一视图,常用于容器镜像的分层存储。

  1. 环境准备
    确保系统支持OverlayFS(Linux内核≥3.18),并安装必要工具:

    • Debian/Ubuntu:sudo apt-get install overlayroot
    • CentOS/RHEL:sudo yum install overlay
    • Fedora:sudo dnf install overlay
  2. 创建目录结构
    OverlayFS需要四个核心目录:

    • lowerdir:底层只读目录(基础文件系统);
    • upperdir:上层可写目录(存储修改/新增文件);
    • workdir:工作目录(OverlayFS内部元数据处理);
    • merged:挂载点(最终的合并视图)。
      示例命令:
    sudo mkdir -p /mnt/overlay/{lower,upper,work,merged}
    ```。  
    
    
  3. 挂载底层文件系统(可选)
    lowerdir需要基于现有文件系统(如ext4),需先格式化并挂载:

    sudo mkfs.ext4 /dev/sdb1  # 假设/dev/sdb1是底层存储设备
    sudo mount -t ext4 /dev/sdb1 /mnt/overlay/lower
    ```。  
    
    
  4. 挂载OverlayFS
    使用mount命令合并目录,语法如下:

    sudo mount -t overlay overlay \
      -o lowerdir=/mnt/overlay/lower,upperdir=/mnt/overlay/upper,workdir=/mnt/overlay/work \
      /mnt/overlay/merged
    

    其中lowerdir可指定多个目录(如lowerdir=/dir1:/dir2),但upperdirworkdir必须唯一。

  5. 验证与持久化

    • 验证挂载:df -h /mnt/overlay/merged,确认文件系统类型为overlay
    • 持久化配置:编辑/etc/fstab,添加以下行(重启后自动挂载):
      overlay /mnt/overlay/merged overlay defaults,lowerdir=/mnt/overlay/lower,upperdir=/mnt/overlay/upper,workdir=/mnt/overlay/work 0 0
      ```。  
      
      
      

二、Overlay Network(容器网络叠加技术)部署步骤

Overlay Network用于跨主机的容器通信,常见于Docker/Kubernetes集群,依赖VXLAN等技术实现。

1. Docker Overlay网络部署

  • 安装Docker
    更新软件源并安装Docker:

    sudo apt-get update && sudo apt-get install -y docker.io  # Debian/Ubuntu
    sudo yum install -y yum-utils device-mapper-persistent-data lvm2 && \
    sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/ && \
    sudo yum install -y docker-ce docker-ce-cli containerd.io  # CentOS/RHEL
    sudo systemctl start docker && sudo systemctl enable docker
    ```。  
    
    
  • 创建Overlay网络
    指定子网、网关和驱动(overlay),示例:

    docker network create --driver overlay --subnet 10.0.0.0/24 --gateway 10.0.0.1 my_overlay
    

    若为多主机集群,需提前配置Docker Swarm(docker swarm init)。

  • 启动容器并连接网络
    将容器连接到Overlay网络,示例:

    docker run -d --name container1 --network my_overlay nginx
    docker run -d --name container2 --network my_overlay nginx
    ```。  
    
    
  • 验证网络连接
    进入容器并ping另一容器IP(通过docker inspect container1获取IP):

    docker exec -it container1 ping <container2_ip>
    ```。  
    
    

2. Kubernetes Overlay网络部署(以Flannel为例)

  • 安装Kubernetes集群
    使用kubeadm初始化集群(单节点测试):

    sudo kubeadm init --pod-network-cidr=10.244.0.0/16  # 指定Pod网络CIDR(与Flannel配置一致)
    mkdir -p $HOME/.kube && sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    ```。  
    
    
  • 部署Flannel CNI插件
    Flannel是Kubernetes常用的Overlay网络插件,支持VXLAN隧道:

    kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
    

    部署后,Flannel会自动为每个节点分配Pod网络IP段。

  • 验证网络连接
    创建两个测试Pod并检查连通性:

    kubectl run nginx-pod1 --image=nginx --restart=Never --overrides='{"spec": {"nodeName": "node1"}}'
    kubectl run nginx-pod2 --image=nginx --restart=Never --overrides='{"spec": {"nodeName": "node2"}}'
    kubectl exec -it nginx-pod1 -- /bin/sh -c "apt-get update && apt-get install -y iputils-ping && ping $(kubectl get pod nginx-pod2 -o jsonpath='{.status.podIP}')"
    ```。  
    
    
    

注意事项

  • OverlayFS需确保workdir目录权限正确(属主为用户);
  • Kubernetes Overlay网络需提前配置CNI插件(如Flannel、Calico),且集群节点间网络互通;
  • 生产环境中需优化Overlay网络性能(如启用硬件加速、调整MTU)。

0